Rails动态呈现部分

时间:2017-11-05 17:35:50

标签: javascript jquery ruby-on-rails ajax forms

我对此感到有点疯狂,我有一个事件 has_many 服务员但我还没有能够在事件表单中动态创建,我有一个部分表单的Attendant,这有效:

<%= form.fields_for :attendants do |form_attendant| %>
  <%= render 'form_attendant', form_attendant: form_attendant %>
<% end %>

对于1名服务员,如果我复制粘贴它,它适用于2,依此类推..

我想要一个按钮为我做这件事,我已经阅读并试过了一个loooot。

选项1: 我已尝试在js中附加:

$("#attendants").append "<%= form.fie ... %>"

但它只是打印文本并且不会渲染部分内容,我已经尝试使用 escape_javascript 而没有运气。

我现在正在尝试:

<%= link_to "Agregar", new_attendant_path, remote: true %>

我有这些服务员/ new.js.erb

$('#attendants').append("<%= escape_javascript ( render partial: 'form_attendants' ) %>");

哪个实际有效并呈现部分但现在我不知道如何发送本地事件表单以便我可以制作 <{1}}在部分内部,

任何帮助都会受到赞赏,我几乎要哭了

2 个答案:

答案 0 :(得分:1)

尝试nested_form_fields gem

= form_for @user do |f|
  = f.nested_fields_for :videos do |ff|
    = ff.remove_nested_fields_link
    = ff.text_field :video_title
    ..
  = f.add_nested_fields_link :videos

您可以更改 remove_nested_fields_link add_nested_fields_link 的链接文字,添加类/属性等...

您还可以通过覆盖

来自定义添加/删除功能

nested_form_fields.js.coffee 加入您的rails JavaScript资源

了解更多信息

https://github.com/ncri/nested_form_fields

<%= form_for @users do |f| %>
 <%= f.fields_for :attendants do |form_attendant| %>
   <%= render 'form_attendant', form_attendant: form_attendant %>
 <% end %>
 <%= f.add_nested_fields_link :attendants %>
<% end %>

partial _form_attendant.html.erb

<%= form_attendant.remove_nested_fields_link %>
<%= form_attendant.text_field :attd_date %>
<%= form_attendant.text_field :attd_time %>

答案 1 :(得分:0)

尝试使用cocoon gem它会做所有这些事情