我有一个模型isset($_POST['name'])
,通过联结表Word
有多对多关系Translation
。
word_to_words
本身就是Translation
类。
这些是它的源代码。
Word
class Word < ApplicationRecord
has_many :word_to_words
has_many :translations, through: :word_to_words
end
class WordToWord < ApplicationRecord
belongs_to :word
belongs_to :translation, class_name: 'Word'
end
<%= form_for(word) do |f| %>
<%= f.text_field :name %>
<%= f.fields_for :translations, word.translations.build do |q| -%>
<%= q.text_field :name %>
<% end -%>
<%= f.submit %>
<% end %>
当我创建新词时,def word_params
params.require(:word).permit(:name, :pronunciation,
word_to_words_attributes: [:word_id, :translation_id],
translations_attributes: [:id, :name]
)
end
变量被拒绝,错误为translation
。
Unpermitted parameter
我认为这是因为我的强参数配置错误。 我该如何设置强参数?
答案 0 :(得分:0)
你应该使用nested_attributes。
class Word < ApplicationRecord
has_many :word_to_words
has_many :translations, through: :word_to_words
accepts_nested_attributes_for :translations
end
迁移可以:
class CreateWordToWords < ActiveRecord::Migration[5.0]
def change
create_table :word_to_words do |t|
t.belongs_to :word, index: true, foreign_key: true
t.belongs_to :translation, index: true, foreign_key: true
t.timestamps
end
end
end