0

私はidをジョインテーブル(document_configuration)に保存できません。Railsドロップダウンhas_manyから

belongs_to :languages 
has_many :document_configurations 
has_many :document_catalogs, through: :document_configurations 

accepts_nested_attributes_for :document_catalogs 
accepts_nested_attributes_for :document_configurations 

がdocument_catalog.rb

has_many :document_configurations 
has_many :documents, through: :document_configurations 

document_configuration.rb

belongs_to :document 
belongs_to :document_catalog 

だから、私が取得したい

document.rb:

私は木のモデルを持っていますリストo f document_catalog in my document_formしたがって、新しい文書を作成するときに、対応するカタログを含めることができます。

これは私のフォームです:私が望むよう

<div class="form-group"> 
    <%= f.select :document_catalog_ids, DocumentCatalog.all.collect {|x| [x.name, x.id]}, {}%> 
</div> 

は、カタログを一覧です。

これは私のコントローラである:

def new 
@document = Document.new 
@document.document_catalogs.build 
end 

def document_params 
    params.require(:document).permit(:name, :description, :document_file, 
    :language_id, {:document_catalog_ids=>[]}) #I tried this too: :document_catalog_ids=>[] without the {} 
end 

私はこのエラーを取得しています:Unpermitted parameter: document_catalog_idsと私は本当にdocument_configurationモデルにdocument_iddocument_catalog_idを保存する必要があります。

もう1つは:私の作成、更新、破壊の方法に何かを追加する必要がありますか?明示的に許可されていないデフォルトパラメータキーで許可されていないキー

+0

間違って何が起こっているかを把握するための最良の方法は、実際のparamsは、あなたのコントローラに通じ来ていることかどうか確認することです。このGitHubのからドキュメントに記載されてい

。たとえば、 'puts params.inspect'を' def document_params'の最初の行に置き、アクションを実行してserver-windowの出力を確認することで、そうすることができます。通常、これにより、欠落しているものが何であるかがわかります(例えば、入れ子レベル)。 –

+0

あなたのジョインテーブルは規則違反です。 Railsは結合テーブルの名前が常に字句的な順序になることを期待しているので、テーブル名を "configuration_documents"に変更して、それが真っ直ぐになるかどうか確認してください。ここでドキュメントをチェックし、セクション3.3.2を見てください。http://guides.rubyonrails.org/association_basics.html#choosing-between-has-many-through-and-has-and-belongs-to-many – bkunzi01

+0

ありがとう。私はparamsを表示して、モデル名を変更しました。私はまだこのように問題があるので、ロジックを少し変更しました – Carlos

答えて

0

取扱いは、開発およびテスト環境に記録されます。他の環境では、これらのパラメータは単に除外され無視されます。

また、この動作は、環境ファイルのconfig.action_controller.action_on_unpermitted_parametersプロパティを変更することで変更できます。 :logに設定すると、許容されない属性が記録されます。:raiseに設定すると、例外が発生します。 https://github.com/rails/strong_parameters#handling-of-unpermitted-keys

+0

ありがとうございます@astelvidaxror私は別のアプローチを試みています。しかし、あなたのご意見のおかげで、私は新しいものをいくつか見つけました。 – Carlos

+0

問題ありません。あなたがあなたの問題を解決できることを願っています。 – astelvida