在我的主模板,我有以下几点:错误渲染的部分(ROR)时传递的形式为局部变量
<%= render :partial => "delivery_date", :collection => @brand.delivery_dates, :locals => {:form => f} %>
然而,当局部尝试使用方式的局部变量,我得到这个错误
Showing app/views/brands/_delivery_date.html.erb where line #2 raised:
wrong number of arguments (0 for 1)
Extracted source (around line #2):
1: <%= delivery_date.id %>
2: <%= form.text_field :name %>
3: <% new_or_existing = delivery_date.new_record? ? 'new' : 'existing' %>
4: <% prefix = "brand[#{new_or_existing}_delivery_date_attributes][]" %>
5: <% fields_for prefix, delivery_date do |dd_f| %>
有谁明白这是什么错误意味着?
其实我想做
<% form.fields_for delivery_date do |dd_f| %>
,但还是失败,那么。
我试着用:locals => { :f => f }
代替:locals
,并在部分代码中使用了f
。没有影响,那么错误是undefined method or variable f
。
...
好,而不是要求您调试错误,问题是怎么也呈现fields_for在嵌套部分形式:
在主模板:
<% form_for @object do |f| %>
<% render :partial => 'child', :collection: @object.child %>
<% end %>
在子模板中:
<% form.fields_for child do |c_f| %>
<%= c_f.text_field :foo %>
<% end %>
传递此表单的合适方法是什么目的?
对不起忘了补充环境:
的Ruby 1.8.7
Rails的2.3? (要回去看看小版本,没有在我面前的代码)
(我知道这是一个新手的问题:()
:locals => {:x => 2}起作用。 事实上,我意识到自从我在link_to_function中渲染此模板时,可能是因为我没有完全查看错误堆栈,并且错过了错误来源。我认为这有助于:我将继续保持它。谢谢。 – 2010-03-19 19:39:57