看到使用带有嵌套资源的form_for的问题,我已将路由重新映射为更合理。
我的routes.rb:
resources :books do
resources :sections, :controller => 'content_sections'
member do
post 'publish'
end
end
我的_form.html.haml
= form_for [@book, @content_section] do |f|
-if @content_section.errors.any?
#error_explanation
%h2= "#{pluralize(@content_section.errors.count, "error")} prohibited this section from being saved:"
%ul
- @content_section.errors.full_messages.each do |msg|
%li= msg
.field
= f.label :name
= f.text_field :name
这导致此错误:
undefined method `book_content_sections_path' for #<#<Class:0x00000103a58238>:0x00000103a4a0e8>
我期待的是book_sections_path
,但没有考虑routes.rb中的设置。
答案 0 :(得分:3)
由于模型和控制器之间没有真正的关系,因此在不使用标准约定时需要指定URL:
form_for [@book, @content_section], :url => book_sections_path(@book, @content_section)