Я работаю над базовым приложением 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 определенного календаря, я получаю следующее сообщение об ошибке:
ActionController::UrlGenerationError - No route matches {:action=>"show", :calendar_id=>nil, :controller=>"content_items", :id=>"5"} missing required keys: [:calendar_id]
Это говорит ошибка исходит от: просмотров/content_items/index.html.erb
<td><%= link_to 'Show', calendar_content_item_path(content_item.calendar, content_item) %></td>
Я пробовал несколько разных маршрутов, но они приводят к различным ошибкам. Нужно ли обновлять модель и/или контроллеры, так как я создал вложенные маршруты?
в основном рельсы не в состоянии генерировать URL только из content_item объекта. поскольку он вложен, вам также необходимо передать родительский объект календаря. check [documentation] (http://edgeguides.rubyonrails.org/routing.html#creating-paths-and-urls-from-objects) –