我正在尝试将动态字段添加到我的rails应用程序中。 我有一个fields_for
<%= form.fields_for :books do |book| %>
<%= render 'book_fields', form: book %>
<% end %>
<%= link_to_add_fields "Add Field", form, :books %>
如果我在渲染中传递表单,为什么我会收到此错误?
我已经尝试过book.label:title但是我得到了同样的错误,但是它不是未定义的可变形式,而是书。有任何想法吗?提前致谢。
更新:
<%= form.fields_for :books do |builder| %>
<%= form.label :title %>
<%= form.text_field :title %>
<%= form.hidden_field :_destroy %>
<% end %>
如果删除部分渲染并将表单文本字段和标签粘贴到fields_for本身,则可以正常工作。渲染局部时,就是我得到错误。
答案 0 :(得分:1)
而是使用form
块变量作为渲染方法中的本地变量,您必须使用builder
块变量,例如:
<%= form.fields_for :books do |book| %>
<%= render 'book_fields', f: book %>
<% end %>
在部分:
<fieldset>
<%= f.label :title %>
</fieldset>
错误正在发生,因为您正在使用“main”表单变量,并且当部分加载时,Rails会尝试将其作为局部变量找到,在该上下文中不存在。