J'ai parcouru des tonnes de questions sur les ressources imbriquées pour les form_for et je ne peux obtenir aucune des solutions qui me conviennent. J'ai pensé qu'il était temps de poser une question personnalisée.formulaire pour ressource imbriquée
J'ai deux modèles, des emplois et des questions, les emplois ont beaucoup de questions et de questions appartiennent à des emplois.
J'ai utilisé l'échafaudage pour créer les contrôleurs et les modèles puis imbriqué les ressources dans les routes.rb.
root :to => "pages#home"
resources :jobs do
resources :questions
end
get "pages/home"
get "pages/about"
get "pages/contact"
class Job < ActiveRecord::Base
has_many :questions
end
class Question < ActiveRecord::Base
belongs_to :job
end
En ce moment je suis en train d'accéder '/ emploi/1/questions/nouvelles' et continuer à obtenir le
NoMethodError dans Questions # nouveau
J'ai commencé avec l'erreur Aucun résultat d'itinéraire {: contrôleur => « questions »} lorsque le code a été
<%= form_for(@question) do |f| %>
Je sais que cela est faux, alors j'ai commencé à essayer d'autres combos et aucun d'entre eux travaillé.
J'ai essayé
<%= form_for([@job.questions.build ]) do |f| %>
que
<%= form_for([@job, @job.questions.build ]) do |f| %>
que
<%= form_for(@job, @question) do |f| %>
Parmi un tas d'autres combinaisons et qui ne fonctionnent pas.
Voici un lien vers mes routes râteau: clone git https://gist.github.com/1032734
Toute aide est appréciée et laissez-moi savoir si vous avez besoin de plus d'informations, merci.
Le premier option travaillé, merci! - Que fait l'url qui corrige ça? En outre, job_id pour la question n'est pas mise à jour dans la base de données - aucune idée comment résoudre ce problème? FYI: l'édition a retourné cette erreur: Aucune route ne correspond {: controller => "questions"} – Igrabes
Lorsque vous ne passez pas l'option ': url', Rails essaie de se débrouiller tout seul. Il ne sait pas que 'Question' est toujours une sous-ressource de' Job', parce que ce n'est pas toujours le cas. En ce qui concerne le 'job_id' n'est pas mis à jour, si vous utilisez l'attribution de masse, il est probablement en train de l'ignorer. Appelez 'question.job = new_job' séparément. Cependant, je ne peux pas voir votre code. – d11wtq
Hé @ d11wtq, je ne suis pas tout à fait sûr de ce que vous entendez par Appelez question.job = new_job - où cela se passe-t-il? Voici mon repo [lien (https://github.com/igrabes/InterQ), si cela aide. – Igrabes