2014-06-19 133 views

回答

6

你在找什麼是嵌套表格,這在RoR中很常見。有關嵌套和複雜表單的更多信息,請參閱section of a Rails Guide for that。我建議檢查所有Rails Guides,這在學習框架時非常有用。

對於您的具體問題,請先告訴您的Contract型號爲accept_nested_attributes_for您的Addendum型號。

class Contract < ActiveRecord::Base 
    has_many :addendum 
    accepts_nested_attributes_for :addendums 
end 

接下來,打開你的合同控制器,做兩件事。一,在製作新的contract時建立一個addendum。二,在contract_params方法中允許addendums的嵌套屬性(假設你使用rails 4)。

class ContractController < ApplicationController 
    def new 
    @contract = Contract.new 
    @addendum = @contract.addendums.build 
    end 

    protected 
    def contract_params 
     params.require(:contact).permit(:field1, :field2, addendums_attributes: [:id, :value, :other_field]) 
    end 
end 

最後,在你的contract S型加forms_for幫手。

<%= form_for @contract do |f| %> 

    <!-- contract fields --> 

    Addendums: 
    <ul> 
    <%= f.fields_for :addendums do |addendums_form| %> 
     <li> 
     <%= addendums_form.label :value %> 
     <%= addendums_form.text_field :value %> 

     <!-- Any other addendum attributes --> 

     </li> 
    <% end %> 
    </ul> 
<% end %> 

因此,你應該全部設置!快樂的編碼!

+2

c.f. http://railscasts.com/episodes/196-nested-model-form-part-1或修訂版本。 – Ari

+0

謝謝你的回覆,它的工作。但是,在合同主管人員身上,我怎樣才能訪問有關附錄屬性的參數值?它不應該是params [:addendum] [:value]? – NunoRibeiro

+0

使用嵌套參數,只需在'create'或'update'控制器方法中使用'@ contract.assign_params(contract_params)'來分配'contract_params'。然後你可以簡單地調用'@ contract.addendum.first.value'來獲得你的第一個附錄的價值。那是你在找什麼? –

相關問題