0

我正在按照以下视频中的说明在 Rails 3 中构建一个表单:http ://railscasts.com/episodes/197-nested-model-form-part-2 。

我的表单与视频中的表单有一个主要区别:我希望能够从表单中删除一组字段,而不是能够删除表单上的一个字段。该组包含以下字段:“人数”、“性别”、“种族”、“年龄”。我能够使用本视频系列第 1 部分中的复选框删除这组字段,但由于我添加了 jquery 功能,它没有工作。

有什么建议么?

新的.html.erb

<%= f.fields_for :audiences do |builder| %>
<div class="audiencefields">

<%= builder.hidden_field :_destroy %>
<%= link_to_function "remove", "remove_fields(this)" %>
<p>
    <%= builder.label :number_of_people %><br />
    <%= builder.text_field :number_of_people %>
</p>
<p>
    <%= builder.label :gender %><br />
    <%= builder.text_field :gender %>
</p>
<p>
    <%= builder.label :ethnicity %><br />
    <%= builder.text_field :ethnicity %>
</p>
<p>
    <%= builder.label :age %><br />
    <%= builder.text_field :age %>
</p>
</div>
<% end %>

应用程序.js

function remove_fields (link) {
        $(link).previous("input[type=hidden]").value = "1";
        $(link).up(".audiencefields").hide();
    }    
4

2 回答 2

1

我花了一段时间试图解决这个问题,但找不到解决方案,因为这个 railscast 对于 Rails 3 来说似乎已经过时了。我最终安装了 Nested Form gem,它工作得很好:https://github。 com/ryanb/nested_form

于 2012-06-05T15:50:29.807 回答
0

我相信您的 jQuery 有问题,请尝试http://api.jquery.com查找一些功能。我想你可能正在寻找

$(link).prev("input[type=hidden]").val = "1"
$(link).slideUp("audiencefields")

或类似的东西。您可能正在寻找 $(link).prev().css("hidden",true)。不完全确定,但有可能。检查 firebug 以确保您使用的所有方法都是 jQuery 的一部分。

另外,确保所有 jQuery 都在 $(document).ready(); 或者它可能不起作用。

于 2012-06-04T18:42:36.600 回答