Voici mon code comme il se trouve maintenant ...Définition d'une association clé étrangère basée sur la route
class Article < ActiveRecord::Base
has_many :registrations
class Registration < ActiveRecord::Base
belongs_to :article
#app/views/articles/show.html.erb
<%= link_to 'Register', new_registration_path({:article_id => @article}) %>
#app/views/registrations/_form.html.erb
<%= f.hidden_field :article_id %>
#app/controllers/registrations_controller.rb
def new
@registration = Registration.new
@registration.article = Article.find params[:article_id]
..et cela fonctionne juste Peachy. Cependant, je voudrais vous débarrasser du code dans l'application/vues/articles/show.html.erb et faire avec une route ...
<%= link_to 'Register', new_article_registration_path(@article) %>
... et je voudrais également vous débarrasser de hte hidden_field que j'utilise dans la vue des inscriptions. Je sais que je dois ajouter une méthode de construction à mon contrôleur, mais je ne suis pas sûr de l'ajouter à l'article ou au contrôleur d'enregistrement. Toute aide appréciée!
Thanx jdoe .. est <% = link_to 'Register', [: new, @article,: registration]%> différent de <% = link_to 'Register', new_article_registration_path (@article)%>? J'ai le même code dans mon fichier routes.rb. Mais je n'obtiens pas article_id en tant que paramètre lorsque je sauvegarde un enregistrement. – Lumbee
@Lumbee Oui, c'est fondamentalement le même, mais plus concis. C'est étrange que votre code n'a pas fonctionné. Vérifiez si vous n'avez pas perdu le 's' final dans' resources' pour vos ': articles'. – jdoe
Non, mes itinéraires sont bons. Je pense que j'ai besoin de quelque chose comme @article = article.find params [: article_id] 'ou' @registration = @ article.registrations.build 'dans mon contrôleur d'enregistrements. – Lumbee