2012-11-02 35 views
2

我建立了一個形式的搜索是這樣的:如何獲得通過使用options_from_collection_for_select select_tag選擇的值,並將它傳遞給控制器​​

<%= form_tag({ controller: 'questions', action: 'search_topic' }, method: 'get') do %> 
    <%= select_tag 'search_topic', options_from_collection_for_select(current_user.get_topics, :id, :name) %> 
    <%= submit_tag "Search", name: nil, class: 'btn' %> 
<% end %> 

我想要搜索選擇框中選擇一個主題的所有問題,我用太陽黑子以幫助搜索,所以現在如何傳遞值從選擇框中選擇控制器搜索,我用下面的代碼通過一個PARAMS [:搜索]:

<%= select_tag 'search_topic', options_from_collection_for_select(current_user.get_topics, :id, :name), params[:search] %> 

,但它的主要錯誤:

undefined method `[]' for nil:NilClass 

這是我的控制器:

def search_topic 
    @search = Question.search do 
    with(:topic_id, params[:search]) 
    paginate page: 1, per_page: 10 
    end 

    @questions = @search.results 
    render 'index' 
end 

那麼,如何可以通過從選擇框中選擇的形式,以控制器爲搜索的價值?

回答

2

嘿,沒有必要通過參數[:搜索]。
當提交按鈕被點擊時,Rails會自動爲選擇生成參數。

如果要將參數名稱命名爲'搜索',則將選擇'搜索主題'的名稱更改爲'搜索'。

如果您想檢查params的值,那麼它將如何在params中收到,請嘗試調試器並檢查由此表單生成的params的值。

此外,還有一個快捷方式,嘗試在按下提交後調用的操作中出現錯誤,並在瀏覽器頁面上讀取參數。您也可以在下一頁的Flash中打印

+0

我已經在控制器中傳遞了它,但是搜索錯誤。 – Thanh

+0

你在控制器中做了什麼?你可以在控制器和查看文件中分享你的代碼,並且如果可能的話也會出錯 –

+0

我的控制器和視圖在我的問題中,只是不同的是我已經將參數[:搜索]更改爲params [:search_topic]。 – Thanh

3
<%= select_tag 'search_topic', 
    options_from_collection_for_select(current_user.get_topics, :id, :name) %> 

此處假設顯示的視圖代碼位於表單內。

params[:search_topic] 

包含您所選擇的值:如果這種形式的職位,它與創建行動結束了發言權。

+0

謝謝你的回答。 – Thanh

相關問題