11

我有一个显示一组输入的表单。我还有一个按钮,单击时,我发出一个 ajax 请求,该请求应该用一组不同的输入替换现有的输入。

我所有的ajaxy链接东西都很好。问题是我使用的是form_for,所以为了显示新的表单输入,我需要表单构建器实例。

查看文件

<%= simple_form_for @order do |f| %>
    <div id="info">
        <%= render 'my_first_form_fields_partial', f: f %>
    </div>
    <%= link_to 'Change inputs', change_inputs_path, remote: true %>
<% end %>

我希望我的 js.erb 看起来像这样,但f仅在视图中的表单范围内定义。

$('#info').html("<%= escape_javascript(render 'my_second_fields_partial', f: f) %>");

我该如何工作才能f以某种方式进入那个部分?

4

2 回答 2

20

您可以在您的部分中使用 fields_for 并将 @object 传递给它吗?这样你就不需要通过表单构建器了?

部分的:

<%= fields_for object do |f| %>
  f.text_field :field_name
<% end %>


$('#info').html("<%= escape_javascript(render 'my_second_fields_partial', object: @object) %>
于 2012-06-08T03:09:00.640 回答
0

非常感谢@flyfish,他的回答帮助我解决了如何使用嵌套属性进行 ajax。我接受了@flynfish 的回答,并根据我的情况对其进行了调整:

<%= fields_for object do |f| %>
  <%= f.fields nested_object, child_index: Time.now.to_i do |builder| %>
<% end %>

$('#info').html("<%= escape_javascript(render 'my_second_fields_partial', object: @object), nested_object: @nested_object %>

child_index很重要,因为没有它,您的 params 哈希将使用 [0] 构建,然后将覆盖使用初始 fields_for 构建的任何其他记录,该初始 fields_for 从零开始并从那里递增。

于 2020-06-21T00:48:51.910 回答