Rails未定义的方法表单fields_for

时间:2017-09-20 14:58:02

标签: ruby-on-rails

我正在尝试将动态字段添加到我的rails应用程序中。 我有一个fields_for

<%= form.fields_for :books do |book| %>
    <%= render 'book_fields', form: book %>
<% end %>
<%= link_to_add_fields "Add Field", form, :books %>

当它呈现book_fields时,我收到以下错误 enter image description here

如果我在渲染中传递表单,为什么我会收到此错误?

我已经尝试过book.label:title但是我得到了同样的错误,但是它不是未定义的可变形式,而是书。有任何想法吗?提前致谢。

更新:

<%= form.fields_for :books do |builder| %>
  <%= form.label :title %>
  <%= form.text_field :title %>
  <%= form.hidden_field :_destroy %>
<% end %>

如果删除部分渲染并将表单文本字段和标签粘贴到fields_for本身,则可以正常工作。渲染局部时,就是我得到错误。

1 个答案:

答案 0 :(得分:1)

而是使用form块变量作为渲染方法中的本地变量,您必须使用builder块变量,例如:

<%= form.fields_for :books do |book| %> 
  <%= render 'book_fields', f: book %> 
<% end %> 

在部分:

<fieldset> 
  <%= f.label :title %> 
</fieldset>

错误正在发生,因为您正在使用“main”表单变量,并且当部分加载时,Rails会尝试将其作为局部变量找到,在该上下文中不存在。