Je suis en train de créer un < sélectionnez l'élément > selon la méthode de collection_select, mais il semble que pour l'option < appropriée > à sélectionner, l'identifiant passé dans collection_select doit être une variable d'instance et non une variable locale (cela se passe dans une partie).Ruby on Rails: Comment utiliser une variable locale dans un collection_select
Alors, quand je crée un < sélectionnez > pour le categories
d'un product
, la catégorie appropriée est sélectionnée par défaut.
_product_row.erb (NE FONCTIONNE PAS):
My product: <%= product.name %>
<%= collection_select(:product, :category_id, @current_user.categories, :id, :name, options = {:prompt => "-- Select a category --"}) %>
Screenshot:
alt text http://img534.imageshack.us/img534/8929/screenshot20100421at120.png
j'ai découvert que je pouvais le faire fonctionner en déclarant une variable d'instance avant la main, mais cela semble être un énorme hack pour moi.
_product_row.erb (TRAVAUX):
<% @product_select_tmp = product %>
<%= collection_select(:product_select_tmp, :category_id, @current_user.categories, :id, :name, options = {:prompt => "-- Select a category --"}) %>
Screenshot:
alt text http://img534.imageshack.us/img534/1958/screenshot20100421at120l.png
Parce que cette partie est itérer sur une collection de produits, je ne peux pas simplement avoir déclaré dans @product le contrôleur (IOW sauf si je manque quelque chose, le produit doit être une variable locale dans ce partiel).
Alors, comment puis-je obtenir collection_select pour sélectionner l'élément approprié lorsque je l'appelle avec une variable locale?
Figuré J'ajouterais ceci comme sa propre réponse car la dernière semble avoir été utile dedans et dehors elle-même, bien que n'étant pas tout à fait ce que vous cherchiez. –
Merci encore Damien, qui semble avoir fait l'affaire, bien qu'il devrait être: selected => product.category.id. Si vous mettez à jour votre réponse, je la marquerai comme acceptée. Il est à noter que l'option: prompt sera toujours présente dans la liste déroulante de ce scénario (les rails sont assez intelligents pour ne pas utiliser les options si vous utilisez la méthode dans le second exemple de ma question), mais je peux vivre avec :) – mmacaulay
Fait et fait. Codage heureux. –