2011-11-14 11 views
0

だから、私の最初の質問Stackoverflow!この選択は、ユーザーが現在上にあるカテゴリを表し、およびユーザー入れ子のリソースを持つcollection_select

<%= collection_select(:category, :slug, current_user.categories, :slug, :name) %> 

: は、だから私はあなたが上にある現在のカテゴリを表しcollection_selectを持っている...それはどのようになる

を見ることができますカテゴリを切り替えることができるはずです。

カテゴリがそうのようなポストを持っている:選択した値である

http://myproject.com/categories/action 

resources :categories do 
    resources :posts 
end 

私はcollection_selectが自動的にこれまでの作品のURLパラメータに基づいて、現在のカテゴリを選択します現在のurlパラメータと同じです。ユーザーがポストに移動したときに しかし、それは動作しません:

http://myproject.com/categories/action/my-new-post 

これはcollection_selectをリセットし、私は私が何をすべき、それが落ち着いた資源とは何かを持って考え出しましたか?

わかりやすく:ユーザーがカテゴリを選択したときにページをリロードするための非常に単純なjavascriptがあります。

答えて

0

コレクションの選択に初期値を設定するように思えます。ような何か:また

<%= collection_select(:category, :slug, current_user.categories, :slug, :name {:selected => params[YOUR_PARAM_NAME_HERE]}) %> 

、あなたがこの

<%= collection_select(:category, :slug, current_user.categories, :slug, :name {:selected => @category.slug} %> 

ような何かを行うことができた場合は、右の程度ということですか?

+0

「http:// myproject.com/categories/action/my-new-post'私の2番目のケースではうまくいきましたが、私のアプリケーションのどこにあるかによってパラメータが変わります。 'http:// myproject.com/categories/action/my-new-post'のパラメータに' category_id'があり、カテゴリに入っていれば 'id'です。私が ':selected => params [:category_id]'を定義していないと、それは私が投稿にいるときに機能し、もし定義すれば、ただカテゴリに入っても機能しません。読んだ後、 'collection_select'が自動的にこれを把握してはいけませんか? –

+0

実際に動作する解決策が見つかりました: ':selected => lambda {return params [:id] || params [:category_id]} .call'しかし、私はこれが最高の、あるいは良い解決策であることを本当に疑っています。これを行うためのよりクリーンな方法が必要です。 –

関連する問題