【发布时间】:2017-10-13 15:47:58
【问题描述】:
我正在尝试实现嵌套模型,这里是路由文件入口:
resources :projects do
resources :instances
end
以下是项目控制器的sn-p:
# GET /projects/new
def new
@project = Project.new
@project.instances.build
end
和项目的表单视图:
<%= simple_form_for(@project) do |f| %>
...
<%= label_tag :instance_count, "Instance Count" %>
<%= select_tag :instance_count, options_for_select([0, 1, 2, 3, 4, 5], 0) %>
...
<% end %>
现在,当我更改实例计数时,我需要在上述表单下方多次显示实例字段。这是部分代码:
<%= form.simple_fields_for :instances do |i| %>
...
<% end %>
基本上我需要从项目的 javascript 文件中调用 <%= render 'instances/form', form: f %>。它应该像链接remote: true 选项一样工作。但在这种情况下,没有链接,但在更改事件时需要显示表单。我应该如何实现这个?
【问题讨论】:
-
当您点击
@project[:instance_count]并更改数字时,您想显示不同数量的instances输入字段吗?这需要AJAX吗?也许在那个 div 上听那个点击事件就足够了,在那个页面上附加一个新的 div,当你提交表单时,确保提交适用于这些字段..我正在考虑发布一个答案..添加输入字段有点棘手,因为表单有一个避免 CSRF 的token,也可能需要使用Javascript执行提交,并且您需要创建一个 jquery.post()请求 -
您的触发器听到的是点击
<%= select_tag :instance_count, options_for_select([0, 1, 2, 3, 4, 5], 0) %>所以$('#select_tab').click( // add input div to the page depending on the div .value() result );,没有服务器交互。然后你需要用这个函数api.jquery.com/jQuery.post在javascript文件中做post请求
标签: javascript ruby-on-rails simple-form