2012-04-08 29 views
2

在我最新的網站我有這樣定義的搜索表單路線要得到像網址:Rails的相關搜索表單

http://www.mysite.com/search/[the_termn_that_was_typed] 

所以,當我正在尋找「吸血鬼」的例子,我應該得到:

http://www.mysite.com/search/vampire 

這一個的任何線索?

謝謝了很多,

+0

不工作?你有什麼? – 2012-04-08 16:39:51

+0

直接去url的作品,但按搜索得到我的http://www.mysite.com/search?utf8=%E2%9C%93&termen=vampire&commit=Search%C4%83+%C2%BB – Calin 2012-04-08 17:12:01

回答

6

我認爲這樣做的RESTful方式是使發佈的請求重定向,以獲取您想要的構造url的請求。

這裏有兩條路線

resources :articles do 
    collection do 
    get :search, :action => 'search_post', :as => 'search_post' 
    get 'search/:q', :action => 'search', :as => 'search' 
    end 
end 

現在,在控制器重定向POST請求得到請求

def search_post 
    redirect_to search_articles_path(params[:q]) 
end 

由於提交表單用戶的結果,在URL結束

http://www.mysite.com/articles/search/vampire 
+0

如果我需要使用兩個參數,我該如何使用它? – 2016-11-22 07:30:39

1

我不認爲你可以直接使用表單時解決此得到的,因爲這是參數是如何提交。儘管你可以用一點javascript來做。我會提供一個我覺得有點笨重的解決方案,你可以決定它是否值得。

首先,JS(使用jQuery):

$(".search_submit").click(function(){ 
    var button  = $(this); 
    var form  = button.closest("form"); 
    var action  = form.attr("action"); 
    var text_field = form.find(".search_text"); 
    var value  = text_field.val(); 

    window.location = action + "/" + value; 
    return false; 
}); 

然後您的視圖代碼將只需要添加相應的類:

= form_tag search_path(:termen), :method => :get do 
    = text_field_tag :termen, params[:termen], :class => "search_text" 
    = submit_tag "Search »", :class => "search_submit" 

希望有所幫助。

+0

我做認爲我會在搜索字符串上需要一些編碼,謝謝 – Calin 2012-04-09 07:13:49