2013-12-11 48 views
0

我有一個form_for,它有一個輸入文本字段,輸入的文本被髮送到一個控制器,該控制器正在從db的表上進行搜索。用預設的輸入替換form_for

但我想做些不同的事情,而不是在文本字段中輸入文本,我想創建默認的搜索查詢。這將是帶有文本的按鈕,並且基於該文本,參數將被髮送到控制器並進行搜索。

我該怎麼做?我使用Rails 4

我的form_tag

<%= form_tag pos_project(@project), method: :get do %> 
<p> 
<%= text_field_tag :query, params[:query] %> 
<%= submit_tag "Search", name: nil %> 
</p> 
<% end %> 

我想達到的目標:

按鈕(在按鈕上的文字) - > myButton的 當此按鈕時,文本MyButton會被髮送到控制器,控制器將採取參數,並查詢數據庫表,並顯示包含文本MyButton使用下面的查詢結果。

where("name @@ :q", q: query)

回答

0

您可以使用「提交」從參數來查找被按下哪個按鈕。

所以在控制你會得到

params[:commit]="button1" # or 
params[:commit]="button2" # or 
params[:commit]="button3" # based on which button you pressed 
1

爲什麼不使用HTML和Javascript:

<!-- in your view --> 
<%= form_tag pos_project(@project), method: :get, id: "your_search_form" do %> 
<p> 
<%= hidden_field_tag :query, params[:query] %> 
<%= submit_tag "Search", name: nil %> 
</p> 

<% for value in your_preset_values do %> 
    <%= link_to(value, '#', data: { search_query_value: value }, class: "search-query-link") 
<% end %> 

而在你coffee.js文件:

# A class for the Search form JS 
class SearchForm 

    constructor: -> 
    # when a search query link is clicked... 
    $('a.search-query-link').click (e) -> 
     # find the value from the data attribute 
     searchQuery = $(this).data('search-query-value') 
     # assign the value to the hidden field 
     $("input[type='hidden']#query").val(searchQuery) 
     # optional - submit the form 
     $("#your_search_form")[0].submit() 


# Called when the document is loaded  
jQuery -> 
    new SearchForm() 
+0

謝謝你,但它沒有工作,頁面不停止刷新。最後我做了什麼:<%= link_to(value.name,'?utf8 =&query ='+ value.name)%>'我不知道它是否是一種好方法,但它能完成這項工作。 – John

+0

它爲什麼不起作用?這個問題是什麼? – bodacious

+0

它沒有發送任何參數給控制器。 – John