2015-09-30 69 views
0

我的应用程序有安装控制器和地址控制器。one view two controllers

Address has_one :installation and Installation belongs_to :address 

在我的安装视图中,我在其他simple_form中获得了simple_form。像这样:

<%= simple_form_for @installation, class: 'form-horizontal' do |f| %> 
    <%= f.error_notification %> 

     <%= f.simple_fields_for @installation.address do |u| %> 
       <%= u.label :street_address, label: t('address.address_label'), required: true, class: 'col-sm-2 control-label' %> 
       <%= u.input_field :street_address, class: 'form-control' 
       %> 

那么如何更新这两个模型呢?

我可以有两个def params?喜欢的东西:

def installation_params 
    params.require(:installation).permit(x) 
end 

def installation_address_params 
    params.require(:????).permit(y) 
end 

回答

3

您可以使用nested attributes

未经检验的,但大致是:

型号:

class Installation < ActiveRecord::Base 
    belongs_to :address 

    accepts_nested_attributes_for :address 
end 

而在你InstallationsController

params.require(:installation).permit(..., 
    address_attributes: [:id, ...]) 
+0

感谢您的帮助。最后一个问题,更新2个模型的最佳方法是什么?我可以这样做吗? 'def update respond_to do | format | 如果@ installation.update(installation_params)&& @ installation.address.update(installation_params)' – volt

+0

使用嵌套属性当'Installation'保存时,Rails将保存'Address',所以你只需要'if @installation .update(installation_params)',而不是第二个条件。 – thebenedict

+0

当我从安装更新表格时,模型安装会发生变化,但是当我更新表格时,模型不会更新。 我没有收到任何错误 – volt

相关问题