2017-06-02 42 views
0
Order has_many jobs 
Job belongs to order 

我想编辑的@job.order属性:通过输入表单编辑关联模型?

<% order = @job.order %> 
<%= simple_form_for [@job, order], 
    url: job_path(@job), 
    method: :put, 
    remote: true do |f| %> 
    <%= f.input :order_status, input_html: {class: 'form-control'} %> 
    (...) 
<% end %> 

任何方式只是用简单的形式输入办呢?

+0

http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods .html –

回答

0
在job.rb

accepts_nested_attributes_for :order

form.html.erb

simple_form_for @job do |f| 
    f.simple_fields_for @job.order do |order_form| 
    order_form.input :status 
    end  
end 

jobs_controller.rb

params.require(:job).permit(:something, :something_else, :order_attributes => [:status])

+0

根本不显示该字段。 – Giovani

+0

这将表明您尚未正确设置关系。 –

0

您可以使用优秀的茧宝石https://github.com/nathanvda/cocoon来管理嵌套关系,包括轻松添加新的嵌套关系的能力。

class Job < ActiveRecord::Base 
    has_many :orders 
    accepts_nested_attributes_for :orders, reject_if: :all_blank, allow_destroy: true 
end 

class Order < ActiveRecord::Base 
    belongs_to :job 
end 

注意复数。

_form.html.erb *

<%= form_for @job do |f| %> 
    <%= f.label :job_name %> 
    <%= f.text_field :name %> 
    <div id='order'> 
    <%= f.fields_for :orders do |order| %> 
     <%= render 'order_fields', f: order %> 
    <% end %> 
    <div class='links'> 
     <%= link_to_add_association 'add order', f, :orders %> 
    </div> 
    <%= f.submit %> 
<% end %> 

_order_fields.html.erb局部

<div class='nested-fields'> 
    <%= f.label :order_name %> 
    <%= f.text_field :order_name %> 
</div> 
<%= link_to_remove_association "remove order", f %>