私は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 fdocument_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_id
とdocument_catalog_id
を保存する必要があります。
もう1つは:私の作成、更新、破壊の方法に何かを追加する必要がありますか?明示的に許可されていないデフォルトパラメータキーで許可されていないキー
の
間違って何が起こっているかを把握するための最良の方法は、実際のparamsは、あなたのコントローラに通じ来ていることかどうか確認することです。このGitHubのからドキュメントに記載されてい
。たとえば、 'puts params.inspect'を' def document_params'の最初の行に置き、アクションを実行してserver-windowの出力を確認することで、そうすることができます。通常、これにより、欠落しているものが何であるかがわかります(例えば、入れ子レベル)。 –
あなたのジョインテーブルは規則違反です。 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
ありがとう。私はparamsを表示して、モデル名を変更しました。私はまだこのように問題があるので、ロジックを少し変更しました – Carlos