0

休斯頓,我們有一個問題:Rails5,嵌套形式,不確定PARAM

class FirstModel 
has_many :merged_models 
has_many :second_models, :through => :merged_models 
end 

class SecondModel 
has_many :merged_models 
has_many :first_models, :through => :merged_models 
end 

class MergedModel 
belongs_to :first_model 
belongs_to :second_model 
end 

形式:

<%= form_for(first_model) do |f| %> 
<%= f.fields_for :merged_model do |ff| %> 
    <%= ff.label :date %> 
    <%= ff.date_select :start_date %> 

問題:

處理由FirstModelsController#創建的HTML參數: {「utf8」=>「✓」, 「authenticity_token」=>「f + D8AaVzM6ahrUyo/nwxISFEleVrXGxo8m30sIiLIe7gvG8J9KfONjuT09j6z3M4Rvw +「,」「,」「,」「,」「, 「start_date(2i)」=>「2」, 「start_date(3i)」=>「28」,「second_model_id」=>「1」}},「commit」=>「創建」} 未允許的參數:merged_model未經許可參數: merged_model

第一種模式的控制器的強PARAMS:

params.require(:first_model).permit(:first_name, :last_name, merged_models_attributes: [:id, :start_date]) 

第一種模式acccepts合併模型嵌套的屬性:

accepts_nested_attributes_for :merged_models 

但是,創建FirstModel後,MergedModel不會被創建。試圖形式來創建它:

<%= f.fields_for :merged_model [first_model.merged_models.build] do |ff| %> 

不過的了:

MergedModel沒有隱式轉換成整數

完全不明白是什麼意思..

也試過從FirstModel的創作動作中創建一個新的MergedModel,伴隨着一聲:

@merge_model = MergedModel.create! 

,並得到了同樣的錯誤 - 沒有隱式轉換...

誰能解釋一下嗎?我感覺它將我的MergedModel的參數陣列傳遞給MergedModel的參數......?我完全迷失在這裏......

+1

你的表單應該有'fields_for:merged_models'而不是'merged_model' – rlecaro2

+0

我很高興它的工作。我們都去過那裏。 – rlecaro2

回答

1

表單應具有fields_for :merged_models,而不僅僅是merged_model

+0

完美!非常感謝! –

1

在新安裝的Rails5應用程序中,belongs_to默認意味着optional: false(以前稱爲required: true)。

你需要創建一個MergedModel都與FirstModel和相關SecondModel ...

它看起來像你想創建一個MergedModel只與相關的FirstModel,如果SecondModel是可選的,你必須說,對於belongs_to與...

belongs_to :second_model, optional: true 
+0

對不起pal,我忘了重寫我已經添加到MergedModel(不是因爲我知道Rails5中的這個改變,而是因爲我真的需要這個可選的:真正的功能) –