簡體   English   中英

Rails不在動態添加的嵌套表單和父級之間建立鏈接

[英]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”或“任務”傳遞給“步驟”形式,但是我不知道該怎么做。

您可能必須更新父控制器中的參數以包括子代的屬性。 例如

控制器/task_controller.rb

Class TasksController < ApplicationController
  ...

  def task_params
    params.require(:task).permit :name, :description ,
      steps_attributes: [:step, :step_description, :due_date]
  end
end

型號/task.rb

Class Task < ActiveRecord::Base
  has_many :steps
  accepts_nested_attributes_for :steps
end

模型/ step.rb

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM