だから、私の最初の質問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があります。
「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'が自動的にこれを把握してはいけませんか? –
実際に動作する解決策が見つかりました: ':selected => lambda {return params [:id] || params [:category_id]} .call'しかし、私はこれが最高の、あるいは良い解決策であることを本当に疑っています。これを行うためのよりクリーンな方法が必要です。 –