2017-12-17 3 views
0

중첩 된 양식 (http://railscasts.com/episodes/196-nested-model-form-part-1?autoplay=true)에 대한이 튜토리얼을 수행했습니다. 양식/질문/답변을 만들어야합니다. 양식 및 질문에는 적합하지만 내 DB에 답변을 삽입하려면 작동하지 않습니다. ActiveModel :: ForbiddenAttributesError in FormulairesController # create

나는 두 가지 방법을 만들려고 :

def create 
    @formulaire = current_user.formulaires.new(formulaire_params) 
    if @formulaire.save  
    redirect_to @formulaire, notice: "Votre formulaire a bien été crée" 
    else  
    render :new 
    end 
end 

및 #를 @의 formulaire을 = Formulaire.new (PARAMS [: formulaire])

내 formulaire_params 방법 :에서

def formulaire_params 
     params.require(:formulaire).permit(:name, :description,  questions_attributes: [:id,:nom, :typequestion, 
     answer_attributes:[:id, :content]]) if params[:formulaire] 
end 

내 보기 fields_for가있는 양식이 있습니다 : text_field 내용으로 응답하지만 아무것도 내 DB에 삽입되지 않습니다.

감사합니다

+0

모델의 상위 (연관과'accepts_nested_attributes '부분)를 공유 할 수 있습니까? 또한 폼에 제출 한 매개 변수를 통과하는 매개 변수로 로그에 표시되는 내용은 무엇입니까? – inveterateliterate

+0

@inveterateliterate 공유했습니다. Ty – user9007028

+0

감사. 해당 코드를 질문에 추가해야합니다 (또는 질문을 편집 할 수없는 경우 의견을 남기십시오). 또한, 당신이 올린 로그는 쇼 페이지를위한 행동으로 보입니다, 나는 params 형식으로'POST/formulaires /'를 보지 못합니다. 또한 양식을 포함하는 데 도움이됩니다. – inveterateliterate

답변

0
class Formulaire < ActiveRecord::Base 

belongs_to :user 
has_many :questions, dependent: :destroy 
accepts_nested_attributes_for :questions, :reject_if => lambda { |a|  a[:nom].blank? }, :allow_destroy => true 


validates :name, presence: true 
validates :description, presence: true 

end 

class Question < ActiveRecord::Base 
belongs_to :formulaire 
has_many :answers, :dependent => :destroy 
accepts_nested_attributes_for :answers, :allow_destroy => true 

#self.inheritance_column = nil 
enum typequestion: [:reponse_courte, :choix_multiple, :choix_simple] 

end 

그리고 로그 내가 양식 제출 생성 : 나는 새로운 양식을 만들 때

Started GET "/formulaires/112" for 88.172.93.170 at 2017-12-17 19:49:26  +0000 
Cannot render console from 88.172.93.170! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 
Processing by FormulairesController#show as HTML 
    Parameters: {"id"=>"112"} 
    Formulaire Load (0.2ms) SELECT "formulaires".* FROM "formulaires" WHERE  "formulaires"."id" = ? LIMIT 1 [["id", 112]] 
    Question Load (0.2ms) SELECT "questions".* FROM "questions" WHERE "questions"."formulaire_id" = ? [["formulaire_id", 112]] 
    Answer Load (0.1ms) SELECT "answers".* FROM "answers" WHERE "answers"."question_id" = ? [["question_id", 153]] 
    Answer Load (0.1ms) SELECT "answers".* FROM "answers" WHERE "answers"."question_id" = ? [["question_id", 154]] 
    Rendered formulaires/show.html.erb within layouts/application (3.3ms) 
    User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 3]] 
    Rendered layouts/_navigation.html.erb (3.0ms) 
Rendered shared/_message.html.erb (0.2ms) 
    Rendered layouts/_footer.html.erb (0.2ms) 
    Completed 200 OK in 82ms (Views: 79.9ms | ActiveRecord: 0.6ms) 
0

Started GET "/formulaires/new" for 88.172.93.170 at 2017-12-18 09:30:28 +0000 
    Cannot render console from 88.172.93.170! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 
    Processing by FormulairesController#new as HTML 
    User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 3]] 
    Rendered formulaires/_form.html.erb (29.2ms) 
    Rendered formulaires/new.html.erb within layouts/application (30.6ms) 
    Rendered layouts/_navigation.html.erb (1.2ms) 
    Rendered shared/_message.html.erb (0.1ms) 
Rendered layouts/_footer.html.erb (0.0ms) 
Completed 200 OK in 82ms (Views: 75.4ms | ActiveRecord: 0.3ms) 

그리고 내 질문을 제출 때 답변 :

Started POST "/formulaires" for 88.172.93.170 at 2017-12-18 09:33:30 +0000 
Cannot render console from 88.172.93.170! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 
Processing by FormulairesController#create as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"YAmDvlvqExWqEKyFUXk+9fEOtFyKw/KJL8fbjfDqOox3w0JqjWRYhf bd4oWSwJXxfVEzuEFsIWOr+vJrF+GoSQ==", "formulaire"=>{"name"=>"aaaaaa", "description"=>"aaaa", "questions_attributes"=>{"0"=>{"nom"=>"aaa", "typequestion"=>"reponse_courte", "_destroy"=>"0"}, "1"=>{"nom"=>"aaa", "typequestion"=>"reponse_courte", "_destroy"=>"0"}}, "answers"=>{"content"=>"aaaa"}}, "commit"=>"Valider le formulaire"} 
    User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 3]] 
Unpermitted parameter: _destroy 
Unpermitted parameter: _destroy 
Unpermitted parameter: answers 
(0.1ms) begin transaction 
SQL (0.4ms) INSERT INTO "formulaires" ("name", "description", "user_id", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?) [["name", "aaaaaa"], ["description", "aaaa"], ["user_id", 3], ["created_at", "2017-12-18 09:33:30.509450"], ["updated_at", "2017-12-18 09:33:30.509450"]] 
    SQL (0.1ms) INSERT INTO "questions" ("nom", "typequestion", "formulaire_id", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?) [["nom", "aaa"], ["typequestion", 0], ["formulaire_id", 114], ["created_at", "2017-12-18 09:33:30.511078"], ["updated_at", "2017-12-18 09:33:30.511078"]] 
    SQL (0.1ms) INSERT INTO "questions" ("nom", "typequestion", "formulaire_id", "created_at", "updated_at") VALUES (?, ?, ?, ?, ?) [["nom", "aaa"], ["typequestion", 0], ["formulaire_id", 114], ["created_at", "2017-12-18 09:33:30.512317"], ["updated_at", "2017-12-18 09:33:30.512317"]] 
    (9.0ms) commit transaction 
    Redirected to https://projetx-hakimghanem.c9users.io/formulaires/114 
    Completed 302 Found in 24ms (ActiveRecord: 10.0ms) 


    Started GET "/formulaires/114" for 88.172.93.170 at 2017-12-18 09:33:31 +0000 
    Cannot render console from 88.172.93.170! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 
    Processing by FormulairesController#show as HTML 
    Parameters: {"id"=>"114"} 
    Formulaire Load (0.2ms) SELECT "formulaires".* FROM "formulaires" WHERE "formulaires"."id" = ? LIMIT 1 [["id", 114]] 
    Question Load (0.1ms) SELECT "questions".* FROM "questions" WHERE "questions"."formulaire_id" = ? [["formulaire_id", 114]] 
    Answer Load (0.1ms) SELECT "answers".* FROM "answers" WHERE "answers"."question_id" = ? [["question_id", 156]] 
    Answer Load (0.1ms) SELECT "answers".* FROM "answers" WHERE "answers"."question_id" = ? [["question_id", 157]] 
    Rendered formulaires/show.html.erb within layouts/application (2.0ms) 
User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT 1 [["id", 3]] 
Rendered layouts/_navigation.html.erb (2.2ms) 
    Rendered shared/_message.html.erb (0.1ms) 
    Rendered layouts/_footer.html.erb (0.0ms) 
Completed 200 OK in 54ms (Views: 52.2ms | ActiveRecord: 0.5ms)