嵌套资源 - UrlGenerationError - 没有路由匹配
Nested Resources - UrlGenerationError - No route matches
我正在开发一个基本的 Rails 应用程序。为了让事情顺利进行,我创建了两个脚手架。
- 日历
- content_items
然后我创建了正确的关联。
app/models/calendar.rb
class Calendar < ActiveRecord::Base
has_many :content_items
end
app/models/content_item.rb
class ContentItem < ActiveRecord::Base
belongs_to :calendar
end
routes.rb
resources :calendars do
resources :content_items
end
但是,现在当我尝试查看特定日历的 content_items 时,出现以下错误:
ActionController::UrlGenerationError - No route matches {:action=>"show", :calendar_id=>nil, :controller=>"content_items", :id=>"5"} missing required keys: [:calendar_id]
它说错误来自:
views/content_items/index.html.erb
<td><%= link_to 'Show', calendar_content_item_path(content_item.calendar, content_item) %></td>
我尝试了几种不同的方法,但它们会导致不同的错误。自创建嵌套路由以来,我是否需要更新模型 and/or 控制器?
您忘记为路由添加 _path
后缀:
<td><%= link_to 'Show', content_items_path(calendar) %></td>
尝试使用
<td><%= link_to 'Show', calendar_content_item_path(content_item.calendar, content_item) %></td>
我正在开发一个基本的 Rails 应用程序。为了让事情顺利进行,我创建了两个脚手架。
- 日历
- content_items
然后我创建了正确的关联。
app/models/calendar.rb
class Calendar < ActiveRecord::Base
has_many :content_items
end
app/models/content_item.rb
class ContentItem < ActiveRecord::Base
belongs_to :calendar
end
routes.rb
resources :calendars do
resources :content_items
end
但是,现在当我尝试查看特定日历的 content_items 时,出现以下错误:
ActionController::UrlGenerationError - No route matches {:action=>"show", :calendar_id=>nil, :controller=>"content_items", :id=>"5"} missing required keys: [:calendar_id]
它说错误来自: views/content_items/index.html.erb
<td><%= link_to 'Show', calendar_content_item_path(content_item.calendar, content_item) %></td>
我尝试了几种不同的方法,但它们会导致不同的错误。自创建嵌套路由以来,我是否需要更新模型 and/or 控制器?
您忘记为路由添加 _path
后缀:
<td><%= link_to 'Show', content_items_path(calendar) %></td>
尝试使用
<td><%= link_to 'Show', calendar_content_item_path(content_item.calendar, content_item) %></td>