嵌套资源 - UrlGenerationError - 没有路由匹配

时间:2015-05-25 08:18:27

标签: ruby-on-rails ruby-on-rails-4 nested-routes

我正在开发一个基本的Rails应用程序。为了实现目标,我创建了两个支架。

  • 日历
  • content_items

然后我创建了正确的关联。

应用/模型/ calendar.rb

class Calendar < ActiveRecord::Base
   has_many :content_items
end

应用/模型/ content_item.rb

class ContentItem < ActiveRecord::Base
  belongs_to :calendar
end

的routes.rb

resources :calendars do
  resources :content_items
end

但是,现在当我尝试查看特定日历的content_items时,出现以下错误:

  

ActionController :: UrlGenerationError - 没有路由匹配{:action =&gt;“show”,:calendar_id =&gt; nil,:controller =&gt;“content_items”,:id =&gt;“5”}缺少必需的键: [:CALENDAR_ID]

它说错误来自: 的视图/ content_items / index.html.erb

<td><%= link_to 'Show', calendar_content_item_path(content_item.calendar, content_item) %></td>

我尝试了几种不同的路线,但它们会导致不同的错误。自从我创建了嵌套路由后,是否需要更新模型和/或控制器?

2 个答案:

答案 0 :(得分:2)

尝试使用

<td><%= link_to 'Show', calendar_content_item_path(content_item.calendar, content_item) %></td>

答案 1 :(得分:0)

您忘了在路由中添加_path后缀:

<td><%= link_to 'Show', content_items_path(calendar) %></td>