У меня есть модель вопроса и ответ модель:Rails вложенной PARAMS не работает должным образом
class Question < ActiveRecord::Base
has_many :answers
accepts_nested_attributes_for :answers
end
Вот являются PARAMS я посылаю для вызова #update в QuestionsController
:
{"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
Теперь вот часть, я изо всех сил трагически: Я хочу, чтобы эти Params в белый список. Я не могу управлять именами параметров, поэтому я не могу переименовать 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 (: вопрос)' Я не вопрос парам приходить в PARAMS я отправляю в вопросе выше, и они. «не меняется. В этом вся цель для этого вопроса. – Snowman