2015-09-30 70 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

相關問題