ruby-on-rails – rails fields_for使用多个本地生成部分生成未定义变量的部分

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – rails fields_for使用多个本地生成部分生成未定义变量的部分前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所有,

我遇到了标准fields_for设置的问题.在我的“_form”部分我有:

  1. <div class="comment_list">
  2. <%= f.fields_for :comments do |cf| %>
  3. <%= render :partial => 'comments/comment_fields',:locals => {:f => cf,:tester => true} %>
  4. <% end %>
  5.  
  6. <%= link_to_add_fields "Add a comment",f,:comments %>
  7. </div>

在“_comment_fields”部分中,我有通常的字段,然后是我的测试变量:

  1. <%= tester.to_s %>

当我删除测试器变量时,一切都运行良好.一旦我添加测试变量,我就会收到此错误

ActionView::Template::Error (undefined local variable or method `tester’ for #Class:0xa1f3664>:0xa1f1bd4>)

有没有其他人在使用具有多个本地的fields_for时遇到此问题?

为了详细说明,我的“_comment_fields”部分看起来像这样:

  1. <div class="comment dynamic_field">
  2. <span class="comment_content"><%= f.text_field :content,:class => "comment_content" %></span>
  3. <%= tester.to_s %>
  4. <%= link_to_remove_fields "remove",f %>
  5. </div>

它仅从“_form”部分调用.

解决方法

所有,

Hakunin是有钱的.我在不止一个地方打电话给我.第二个点是我的帮助方法“link_to_add_fields”.我用它来使用javascript添加字段.

方法看起来像这样:

  1. # generates add fields on a dynamic form
  2. def link_to_add_fields(name,association,locals={})
  3. new_object = f.object.class.reflect_on_association(association).klass.new
  4. fields = f.fields_for(association,new_object,:child_index => "new_#{association}") do |builder|
  5. render(association.to_s.singularize + "_fields",:f => builder)
  6. end
  7.  
  8. link_to(name,"#",:class => "dynamic_add",'data-association' => "#{association}",'data-content' => "#{fields}")
  9. end

请注意,这不允许将任何本地传递给render方法.我这样改了:

  1. # generates add fields on a dynamic form
  2. def link_to_add_fields(name,locals.merge!(:f => builder))
  3. end
  4.  
  5. link_to(name,'data-content' => "#{fields}")
  6. end

现在我的_form部分中的link_to_add_fields调用如下所示:

  1. <%= link_to_add_fields "Add a comment",:comments,:tester => true %>

…我可以动态地向表单添加字段并传递其他本地.希望,这将有助于其他人.

猜你在找的Ruby相关文章