我已经在这个问题上苦苦挣扎了几天,似乎无法弄清楚出了什么问题。我正在尝试允许模型Item
的多态文件附件,该模型属于模型Location
。我的路线定义为:
resources :locations do
resources :items
post :sort
end
resources :items do
resources :assets #model for attachments
end
我跟随a tutorial关于使用carrierwave和nested_form完成此操作。但是,在设置完所有内容后,我在请求New
模型的Item
操作时收到以下错误:wrong number of arguments (4 for 3)
。它告诉我错误发生在这个视图的第7行:
<%= nested_form_for [@location, @item], :html => { :multipart => true } do |f| %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<%= f.fields_for :assets do |a_form| %> ### LINE 7 ####
<p>
<%= a_form.label :file %><br />
<%= a_form.file_field :file %>
<%= a_form.hidden_field :file_cache %>
</p>
<%= a_form.link_to_remove "Remove this attachment" %>
<% end %>
<%= f.link_to_add "Add attachment", :assets %>
<p><%= f.submit %></p>
<% end %>
如果我不使用nested_form gem并以正常form_for
开始视图,我没有错误,并且能够成功将单个文件附加到Item
。我可以尝试在没有gem的情况下继续进行,但是(据我所知),nested_form将自动执行一些功能,例如删除文件和生成ajax以添加新附件。
我只是想知道是否有人遇到过这个错误或者知道我犯了什么错误导致了nested_form的问题?我理解错误意味着什么,只是不确定引入额外参数的位置/原因。我非常感谢您提供的任何见解!
FYI我的开发设置:rails(3.1.0,3.0.10),nested_form(0.1.1),carrierwave(0.5.7)
答案 0 :(得分:15)
为了让nested_form与rails 3.1一起使用,我不得不从github中提取最新内容而不是使用gem中的内容。在我的Gemfile中:
gem "nested_form", :git => "git://github.com/ryanb/nested_form.git"