2011-11-14 43 views
0

所以,我的第一個問題在Stackoverflow! 讓我們來看看它是如何去...collection_select與座標資源

所以,我已經有了一個collection_select誰代表當前類別您現在的位置:

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

這種選擇代表哪個類別的用戶目前是,並且用戶應該能夠在類別之間切換。

類別有後,像這樣:

resources :categories do 
    resources :posts 
end 

我想collection_select基於URL參數,到目前爲止的工作自動選擇當前類別:

http://myproject.com/categories/action 

選擇的值是與當前的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'我的參數正在改變,取決於我在我的應用程序中的位置, m在一個帖子'http:// myproject.com/categories/action/my-new-post'中,參數是:'category_id',如果我只是在一個類別中,它是:'id'。如果我沒有定義':selected => params [:category_id]'它在我在帖子中時有用,而且如果我_do_定義它,當我剛剛在一個類別中時它不起作用。讀完一段後,不應該'collection_select'自動計算出來嗎? –

+0

實際上找到了一個解決方案:':selected => lambda {return params [:id] || params [:category_id]} .call'但我真的懷疑這是最好的,甚至是一個很好的解決方案。必須有一個更乾淨的方式來做到這一點。 –