現在アプリを作っています。
サイドバーにカテゴリーリストとサブカテゴリーリストを全て each_with_index
を利用して表示し、それぞれのリンクへ飛ばしたいです(リレーションをしてあります)。
疑問として
each_with_index
ではリレーションしても子モデルのidはとってこれないのでは?
ということがあります。
現状として
- カテゴリーリストのリンクは動作する(サブカテゴリーリストのパスはコメントアウト)
- サブカテゴリーリストのパスに
subcategory.id
とするとActionController::UrlGenerationError
のエラーが出る
といった状況でうまくいきません(m_ m)
わかる方がいらっしゃれば教えていただきますようよろしくお願いいたします(m _m)
###追記
確認で<%= subcateroy.id %>
をしてみると期待通りの数値が出ました。
なおさら原因がわかりません。
###エラー内容
ActionController::UrlGenerationError
が発生する
###期待する動作
- サブカテゴリーリストのパスのリンクがエラーなしで正常に動くようにしたい
###動作環境
OS:mac
Ruby:2.3.5
Ruby on Rails: 4.2.10
###該当のソースコード
db/schema.rb
ruby
1 create_table "categorys", force: :cascade do |t| 2 t.string "name", limit: 255, null: false 3 end 4 5 create_table "subcategorys", force: :cascade do |t| 6 t.string "name", limit: 255, null: false 7 t.integer "category_id", limit: 4, null: false 8 end
config/routes.rb
ruby
1 resources :categorys, only: [:show] do 2 resources :subcategorys, only: [:show] do 3 resources :products, only: [:show] 4 end 5 end
リレーション
ruby
1#app/models/category.rb 2 has_many :products 3 has_many :subcategorys 4#app/models/subcategory.rb 5 belongs_to :category 6 has_many :products
app/views/layouts/application.html.erb
ruby
1... 2 <% categorys.each_with_index do |category, i| %> 3 <b><%= link_to "#{category.name}", category_path(i+1) %></b> 4 <ul> 5 <% category.subcategorys.each do |subcategory| %> 6 <!--↓↓↓↓ここが原因で ActionController::UrlGenerationError が発生しています--> 7 <li><%= link_to "#{subcategory.name}", category_subcategory_path(subcategory.id) %></li> 8 <% end %> 9 </ul> 10 <% end %> 11...
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/14 14:23
2018/06/14 14:37
2018/06/14 14:54