Rails Dropdown has_many through

时间:2016-05-19 22:59:29

标签: ruby-on-rails nested-forms nested-attributes has-many-through model-associations

我无法将ID保存在连接表(document_configuration)中。

我有树模型:

document.rb

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_catalog中所有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_id模型中保存 document_catalog_iddocument_configuration

另一件事是:我需要在创建,更新和销毁方法中添加其他内容吗?

1 个答案:

答案 0 :(得分:0)

处理未经许可的密钥

默认情况下,未明确允许的参数键将记录在开发和测试环境中。在其他环境中,这些参数将被过滤掉并被忽略。

此外,可以通过更改环境文件中的config.action_controller.action_on_unpermitted_parameters属性来更改此行为。如果设置为:log,将记录未许可的属性,如果设置为:raise,则会引发异常。

在GitHub的文档中找到了这个:https://github.com/rails/strong_parameters#handling-of-unpermitted-keys