隐藏字段不是从轨道中的助手生成的

时间:2013-03-20 06:58:40

标签: ruby-on-rails

我正在尝试使用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>

1 个答案:

答案 0 :(得分: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