[英]rails not making the link between dynamically added nested form and parent
我有一个“任务”表单,并且正在动态添加一个子“步骤”表单。
“步骤”通过javascript调用添加到render('steps / form')。
表单可以很好地加载,但是在提交任务表单时,添加的步骤不会放入数据库中。
我认为这是因为我没有将两个表单链接在一起,但是我不确定。
我的代码是Tasks / new.html.erb
<%= form_for @task, :html=>{:multipart=>true} do |f| %> <%= f.label :task_name %> <%= f.text_field :task_name %> <%= link_to "Add Step", @step, :remote=>true, :class=>'addStep %> <%= f.submit %> <% end %> <% content_for(:js) do %> $('a.addStep').click(function(){ $('div#newStep').append("<%= escape_javascript(render('steps/form'))%>"); }); <% end %>
steps / _form.html.erb是
<p class="fields"> <%= fields_for :steps do |builder| %> <%= builder.label :title %> <%= builder.text_field :title %> <% end %>
我认为问题在于我没有将“ f”或“任务”传递给“步骤”形式,但是我不知道该怎么做。
您可能必须更新父控制器中的参数以包括子代的属性。 例如
Class TasksController < ApplicationController
...
def task_params
params.require(:task).permit :name, :description ,
steps_attributes: [:step, :step_description, :due_date]
end
end
Class Task < ActiveRecord::Base
has_many :steps
accepts_nested_attributes_for :steps
end
Class Step < ActiveRecord::Base
belongs_to :task
end
尝试这样的事情:
<%= render :partial => 'steps/form',
:locals => {:form => f} %>
希望这可以帮助。
编辑-1
进行如下操作:
<%= form_for @task, :html=>{:multipart=>true} do |f| %>
<%= f.label :task_name %>
<%= f.text_field :task_name %>
<div style="display:none;" id="steps_form">
<%= render :partial => 'steps/form',
:locals => {:form => f} %>
</div>
<%= link_to "Add Step", @step, :onClick=>"js_function_to_change_display_property()", :class=>'addStep' %>
<%= f.submit %>
<% end %>
那么您可以使用简单的javascript通过更改steps_form的显示属性来查看步骤表单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.