J'utilise formtastic et haml sur une application Rails 3. J'essaie de faire un formulaire imbriqué pour les sondages et les questions, mais cela ne fonctionne tout simplement pas pour moi. J'ai regardé le railcast et tout le reste, mais je n'arrive pas à le faire fonctionner pour mon application. Donc, en ce moment, je donne les résultats suivants:Pourquoi accept_nested_attributes_for ne fonctionne pas pour moi? (rails 3)
modèles
class Survey < ActiveRecord::Base
attr_accessible :intro, :name, :pubdate, :enddate, :pubid
belongs_to :user
has_many :questions, :dependent => :destroy, :autosave => true
accepts_nested_attributes_for :questions, :allow_destroy => true
end
class Question < ActiveRecord::Base
belongs_to :survey
has_many :answers, :dependent => :destroy
attr_accessible :q_text, :order, :q_type
end
méthode contrôleur pertinente
def update
@survey = Survey.find(params[:id])
@user = current_user
if check_auth_and_redirect @user, @survey
if @survey.update_attributes(params[:survey])
flash[:success] = "Survey Updated"
redirect_to edit_survey_path(@survey)
else
@title = "Editing Survey #{@survey.id}"
render 'edit'
end
end
end
vues
= semantic_form_for @survey do |f|
= render "shared/survey_inputs", :object => f
= f.inputs :for => :questions, :name => "Survey Questions" do |fq|
%hr
= fq.input :q_text, :label => "Question text"
= fq.input :q_type,
:label => "Question type",
:as => :select,
:collection => %w(text scale radio select)
= fq.input :order, :label => "Question order"
Le formulaire s'affiche correctement, mais lorsque je modifie une question et que vous cliquez sur Enregistrer, les enregistrements ne reflètent pas mes modifications. Je n'ai debug (params) activée, et voici ce qu'il revient comme:
--- !map:ActiveSupport::HashWithIndifferentAccess
utf8: "\xE2\x9C\x93"
_method: put
authenticity_token: CJCc9LvdoPjxwGJkhUnZjR0Z/c5Wt5VBT3bBr/wB4+A=
survey: !map:ActiveSupport::HashWithIndifferentAccess
name: This is my survey
intro: I've got a lovely bunch of coconuts. There they are all standing in a row.
pubid: smargdab
pubdate(1i): ""
pubdate(2i): ""
pubdate(3i): ""
enddate(1i): ""
enddate(2i): ""
enddate(3i): ""
questions_attributes: !map:ActiveSupport::HashWithIndifferentAccess
"0": !map:ActiveSupport::HashWithIndifferentAccess
q_text: one one one one one one one one one one one
q_type: text
order: "3"
id: "1"
"1": !map:ActiveSupport::HashWithIndifferentAccess
q_text: 2 2 2 2 2 2 2 2 2 2
q_type: text
order: "1"
id: "2"
"2": !map:ActiveSupport::HashWithIndifferentAccess
q_text: 3 3 3 3 3 3 3 3 3 3
q_type: text
order: "2"
id: "3"
commit: Update Survey
action: update
controller: surveys
id: "2"
Qu'est-ce que je fais mal ici? Je ne veux pas avoir à écrire ces changeurs d'attributs manuellement!
cela a fini par être, mais j'ai oublié de re-answer: P –
Toutes les idées pour lesquelles [les formulaires d'objets imbriqués] (http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes) Pas besoin de l'attr_accessible? – Turadg
A travaillé pour moi. Je vous remercie. –