2015-05-25 88 views
0

我正在研究一個基本的Rails應用。爲了解決問題,我創建了兩個腳手架。嵌套資源 - UrlGenerationError - 沒有路由匹配

  • 日曆
  • 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,我得到以下錯誤: 的意見/ content_items/index.html.erb

ActionController::UrlGenerationError - No route matches {:action=>"show", :calendar_id=>nil, :controller=>"content_items", :id=>"5"} missing required keys: [:calendar_id]

它說的錯誤是來自

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

我試過幾條不同的路線,但它們會導致不同的錯誤。我是否需要更新模型和/或控制器,因爲我創建了嵌套路線?

+0

基本軌不能僅從content_item對象生成一個URL。因爲它是嵌套的,所以還需要傳遞父級日曆對象。檢查[文檔](http://edgeguides.rubyonrails.org/routing.html#creating-paths-and-urls-from-objects) –

回答

2

嘗試使用

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

+0

試過這個。我認爲它更接近。更新了原始帖子中的代碼和錯誤。 – JeremyE

+0

更新了答案,請檢查。有一個拼寫錯誤:) –

+0

再次更新原始文章。我感到困惑的錯誤,因爲它出現ID正在傳入。 – JeremyE

0

你忘了_path後綴添加到路線:

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

這導致:未定義的局部變量或方法'content_item_path' – JeremyE

+0

+忘記使用複數形式:'content_items_path' –

+0

+忘記傳遞'calendar'變量來標識相關日曆 –

相關問題