J'ai une idée de ce qui ne va pas, mais j'ai du mal à le réparer.Imbrication des ressources 3 Niveaux profonds
Pour expliquer à nouveau ma situation, j'ai 3 éléments: Travaux, Questions et Réponses. Toutes les relations sont définies ci-dessous. En développant ma question précédente qui concernait la relation Emploi/Questions, j'ai maintenant ajouté la relation Réponses dans Emplois> Questions> Réponses. Donc, avec une nouvelle ressource dans mes routes.rb, je recevais des erreurs de routage, que je réparais au fur et à mesure. Le problème est survenu lorsque je suis arrivé au formulaire Réponses # nouvelle page et que j'ai dû modifier le formulaire_for échafaudage et construire sur l'action Créer dans le contrôleur Réponses (vous pouvez voir mon code pour les deux ci-dessous).
j'ai pu corriger assez ceux pour montrer la forme sur la nouvelle page de réponses, mais quand je clique sur soumettre Je reçois cette erreur:
No route matches {:action=>"show", :controller=>"answers", :job_id=>nil, :question_id=>1, :id=>#<Answer id: 3, job_id: nil, question_id: 1, answer1: "", answer2: "", answer3: "", answer4: "", answer5: "", created_at: "2011-07-01 03:12:06", updated_at: "2011-07-01 03:12:06">}
De cette erreur, je vois que je ne suis pas gardais le job_id et je suis assez sûr que cela a à voir avec moi ne pas appeler le job_id correctement soit dans mes réponses créent une action ou répond à nouveau form_for code. J'ai essayé une tonne de solutions, mais rien ne semble fonctionner. J'ai l'impression d'être proche de mon action de création, mais je n'arrive pas à le faire correctement. Quoi qu'il en soit, merci d'avance pour toute aide et si je ne vous ai pas fourni assez de code environnant, faites le moi savoir et je vais l'ajouter.
Cette question est un extenstion de ce post: Link_to Routing Issue With Nested Resources
post-scriptum J'ai également ajouté mes réponses montrent l'action, parce que bien qu'il fonctionne correctement si je vais directement aux réponses/1 /. J'ai juste le sentiment que si mon action de création est mauvaise, mon action de show aussi.
Modèles:
class Job < ActiveRecord::Base
has_many :questions
has_many :answers
class Question < ActiveRecord::Base
belongs_to :job
has_many :answers
class Answer < ActiveRecord::Base
belongs_to :job
belongs_to :question
Réponses # nouveau formulaire
<%= form_for(@answer, :url => job_question_answers_path(@answer.job_id, @question)) do |f| %>
Réponses créer une action
def create
@job = Job.find(params[:job_id])
@question = @job.questions.find(params[:question_id])
@answer = @question.answers.build(params[:answer])
if @answer.save
redirect_to(job_question_answer_path(@answer.job_id, @answer.question_id, @answer)
end
end
Les réponses montrent une action
def show
@job = Job.find(params[:job_id])
@question = @job.questions.find(params[:question_id])
@answer = @question.answers.find(params[:id])
end
Voir ce https://gist.github.com/1057810 pour mes itinéraires rake les plus courants. Je sais que je ne devrais pas nicher plus d'une couche de profondeur, mais c'était la solution la plus simple et la plus rapide pour moi.
Merci encore!
Salut Brett, merci pour l'aide et d'expliquer tout cela. Malheureusement, j'ai ajouté ce code à mes réponses nouvelle action et il ne sauve pas encore le job_id par la même erreur- "Aucune route correspond {: action =>" show ",: controller =>" réponses ",: job_id => nil,: question_id => 1,: id => #} '. Cela signifie-t-il qu'il doit s'agir d'une création? répond à un problème? Voici une pastie du serveur- http://www.pastie.org/2169613 –
Igrabes