2010-11-05 116 views
1

我的主頁上有一個單獨的文本框表單(/)。Rails在URL中查詢字符串?

現在我設置Rails路線的方式,當我提交這個表單時,它會帶我到/ search,但它不會在我的url中發佈查詢字符串。

換句話說,當我在表單中輸入「hello」並按提交時,我想最終在「/ search?query = hello」。我知道「hello」在params [:query]中,但是在提交查詢後,如何讓Rails在着陸頁URL中發佈該查詢字符串?

我讀the Rails routes guide,但是會談到URL中的傳入查詢字符串,而不是Rails發佈帶有可見查詢字符串的URL。

謝謝。

我的表單標籤至今:

<% form_tag(:controller => "search", :action => "search", :method => :get) do %> 
       <%= text_field_tag 'query' %> 
       <%= submit_tag "Search"%> 

      <% end %> 

如果我這樣做,我得到/搜索方法=獲取,但我想看到的是/搜索查詢= foo的?。

+0

嗨顯示你的表單標籤請輸入 – Bohdan 2010-11-05 08:06:08

回答

4

你只需要定義一個get方法,而不是後一種形式

<% form_tag search_url, :method => :get do %> 

    <%=text_field_tag :search %> 
    <%= submit_tag %> 

<% end %> 
0

請確保您的窗體的方法(如在HTML頁面中,一個客戶端將提交表單之前看到所示)是GET不是POST 。通過POST,params[:query]對用戶是隱藏的(通常用於登錄表單,提交信用卡或其他敏感信息的表單)。但是如果你想讓查詢顯示在URL中,你需要使用GET方法。 Rails本身並不負責這種行爲,它全部在Web瀏覽器端。