2017-10-16 107 views
0

我想在控制器的新方法使用accepts_nested_attributes_for通過新的父對象ID LINK_TO

代碼保存父,以及在同一時間子對象:

def new 
    @project = Project.new 
    @project.instances.build 
end 

和形式如下:

<%= simple_form_for(@project) do |f| %> 
    <%= f.input :name %> 
    <%= link_to "Add New Instance", new_project_instance_path(@project), id: "new_link", remote: true %> 
<% end %> 

此路由條目是:

resources :projects do 
    resources :instances 
end 

而且要顯示需要的字段instances/_form.html.erb

<%= form.simple_fields_for :instances do |i| %> 
    <%= i.input :user_id %> 
    <%= i.input :password %> 
    <%= i.input :service_url %> 
<% end %> 

這裏的問題project_id:nil,它給錯誤:

No route matches {:action=>"new", :controller=>"instances", :project_id=>nil} missing required keys: [:project_id] 

我需要以某種方式調用<%= render 'cdd_instances/form', form: f %>,使場在項目細節下面呈現,我應該如何實現?

+0

「路線」的外觀如何? – rony36

+0

更新爲'routes' –

+2

因爲'@project'爲nil,所以你不能在路由中傳遞nil,你應該使用'f.fields_for:instances_attributes' – Gabbar

回答

0

我覺得你@project爲空,你必須通過這樣的:

0

在這種情況下,你是不是能夠通過非持續@project創建此link_to網址。

我相信你正在尋找類似於:cocoon

<%= simple_form_for @project do |f| %> 
    <%= f.input :name %> 
    <h3>Instances</h3> 
    <div id="instances"> 
    <%= f.simple_fields_for :instances do |instance| %> 
     <%= render 'instance_fields', f: instance %> 
    <% end %> 
    <div class="links"> 
     <%= link_to_add_association 'add instance', f, :instances %> 
    </div> 
    </div> 
    <%= f.submit %> 
<% end %> 

乾杯!