0
我有一個問題模型和應答模型:Rails的嵌套PARAMS不能正常工作
class Question < ActiveRecord::Base
has_many :answers
accepts_nested_attributes_for :answers
end
這裏是我送的#UPDATE調用QuestionsController
的PARAMS:
{"id"=>"1", "text"=>"Hello world?",
"answers"=>[{"id"=>1, "text"=>"Answer 4", "question_id"=>1]}
很簡單。更新方法:
def update
@question = Question.find(params[:id])
if @question.update(q_params)
render :json => @question
else
not_valid @question
end
end
現在,我正在苦苦掙扎的部分:我想將這些參數列入白名單。我無法控制參數名稱,所以我不能將answers
重命名爲answers_attributes
。我已經找到了工作,這是有點可笑,唯一的事情是這樣的:
def q_params
p = ActiveSupport::HashWithIndifferentAccess.new(params)
p[:answers_attributes] = p.delete :answers
end
我真的想這樣做的正確的方式,只用permit
。下面是我嘗試過的幾條線的組合,其中沒有一條適用:
params.permit(:text, {:answers_attributes => [:text]})
# or
permitted = [:text, answers_attributes: [:id, :text]]
params.permit(*permitted)
# or
params.permit(:text, {:answers => [:text]})
任何想法?
不便'.require(:問題)'我沒有問題PARAM在未來我張貼的PARAMS在上面的問題和他們。 '不可改變。這是這個問題的全部目的。 – Snowman