2012-07-19 4 views
0

Je suis en train d'accomplir quelque chose comme ceci:Le passage d'un paramètre entre les vues Rails

Je crée un blog simple. J'ai mis en place des catégories pour mon blog. Je veux que lorsque mon utilisateur va aux messages/index, il voit une liste de toutes les catégories.

Exemple: texte image

En cliquant sur une catégorie, mon utilisateur est redirigé vers les messages/nouvelle page, où le champ de category_id sera transmis par un par hidden_field.

Donc, mon code est en ce moment:

dans les messages/index

<% @categories.each do |c| %> 
    <%= link_to c.name, new_post_path(:category => c.id) %><br /> 
<% end %> 

et dans mes messages/_form je suis en train de faire quelque chose comme ça

<%= f.hidden_field :category_id, :value => params[:category_id] %> 

qui est ne fonctionne pas bien, car la sortie html est

Aucune valeur n'est transmise.

Quelle est la bonne façon de procéder ici? Thx!

Répondre

1

À première vue, cela ressemble à une simple erreur mélangeant la catégorie des noms de paramètres et category_id.

Essayez ceci:

<% @categories.each do |c| %> 
    <%= link_to c.name, new_post_path(:category_id => c.id) %><br /> 
<% end %> 
+0

Vous avez raison! Merci beaucoup! – alemur

1

En outre, de ce que je peux comprendre dans votre code, il semble un poste appartient à une catégorie. Dans ce cas, vous pouvez imbriquer des itinéraires de l'un dans l'autre et les chemins de création d'objets imbriqués deviennent accessibles, par exemple new_category_post (@category).

Le routage ressemblerait que:

resources :categories do 
    resources :posts 
end 

Vous pouvez lire à ce sujet ici: http://guides.rubyonrails.org/routing.html

+0

thx! bon point! – alemur