####やりたいこと
tweetsテーブル
|id|text|category_id1|category_id2|
|:--|:--:|--:|
|1|hello|1|2|
categoriesテーブル
id | name |
---|---|
1 | 山田 |
2 | 田中 |
以下のようにアソシエーションを利用して、nameを取得したい
index.html.erb
<% @tweets.each do |tweet|%> <div class="comment"> <%= tweet.category_id1.name%> </div> <%end%>
####問題点
NoMehodエラー
undefined method `name' が発生します
なぜエラーが発生してしますのでしょうか?
###各記述
コントローラー
def index @tweets = Tweet.includes(:user).page(params[:page]).per(5).order("created_at DESC") end def new @tweets = Tweet.find(params[:id]) @tweet=Tweet.new end def create @tweets = Tweet.find(params[:id]) @tweet=Tweet.create(tweet_params) end def tweet_params params.permit(:text,:categorry_id1,:categorry_id2) end
ビュー new.html.erb
<%= form_with url: tweets_path,local: true do |f| %> %= f.text_area :text, cols: 30 ,rows: 10,value: "#{@tweet.text}" %> %= f.label "カテゴリ選択"%> <div class="school"> </div> <div class="school2"> </div> <%end%>
category_id1とcategory_id2はjsファイルでajaxを使って保存しています
参考 この記事の子カテゴリに当たります https://qiita.com/manbolila/items/7c44142de50093470580
######モデルファイル
tweet.rb
class Tweet < ApplicationRecord has_many :category end
category.rb
class Category < ApplicationRecord belongs_to :tweet has_ancestry end
回答1件
あなたの回答
tips
プレビュー