0

我正在尝试使用 rails3 中的allows_nested_attributes_for 功能实现嵌套表单以实现调查表单。调查有很多问题有很多答案。

我想将 :_destroy 字段作为隐藏传递,并在单击链接时使用 jQuery 设置它。它工作正常,但是当我尝试使用辅助方法做同样的事情时,隐藏字段没有显示出来。

module ApplicationHelper
   def link_to_remove_field(link_text, builder)
   builder.hidden_field :_destroy
   link_to link_text, '#',  :class=>"remove_field"
  end
end

这是我要使用的 jquery 函数。

$(function(){
  $('.remove_field').on('click', function(element){
  $(this).prev("input[type=hidden]").val("1");
  $(this).parent('.field').hide();
  return false;
  });
});

这是我称之为助手的部分内容

<%= f.label :question %><br />
<%= f.text_area :question, :rows=>1 %>
<%= link_to_remove_field("Remove question", f) %>

a 标签出现,但隐藏字段不显示。

<textarea cols="40" id="old_question_set_old_questions_attributes_2_question" name="old_question_set[old_questions_attributes][2][question]" rows="1"></textarea>
<a href="#" class="remove_field">Remove question</a>
4

1 回答 1

1

link_to_remove_field只返回最后一行,link_to因为您忘记添加hidden_field. 将您的助手更改为

def link_to_remove_field(link_text, builder)
  builder.hidden_field(:_destroy) +
  link_to(link_text, '#', :class => "remove_field")
end

请注意html_safe调用此方法时可能需要调用

link_to_remove_field(....).html_safe
于 2013-03-20T07:01:16.583 回答