Ruby on rails 与搜索表单相关的Rails路由
在我最新的网站上,我有一个定义如下的搜索表单:Ruby on rails 与搜索表单相关的Rails路由,ruby-on-rails,rails-routing,Ruby On Rails,Rails Routing,在我最新的网站上,我有一个定义如下的搜索表单: = form_tag search_path(:termen), :method => :get do = text_field_tag :termen, params[:termen] = submit_tag "Search »" 路线: # search get "search(/:termen)" => "articole#cauta", :as => :search 当我按下搜索按钮时,我希望看到一个url,
= form_tag search_path(:termen), :method => :get do
= text_field_tag :termen, params[:termen]
= submit_tag "Search »"
路线:
# search
get "search(/:termen)" => "articole#cauta", :as => :search
当我按下搜索按钮时,我希望看到一个url,如:
http://www.mysite.com/search/[the_termn_that_was_typed]
例如,当我搜索“吸血鬼”时,我应该得到:
http://www.mysite.com/search/vampire
关于这件事有什么线索吗
非常感谢,我认为在直接使用表单时,您无法回避这个问题,因为这正是提交参数的方式。不过,您可以使用一点javascript来实现这一点。我会提供一个我觉得有点笨拙的解决方案,你可以决定它是否值得 首先是js(使用jQuery): 然后,您的视图代码只需要添加适当的类:
希望这能有所帮助。我认为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请求重定向到get请求
def search_post
redirect_to search_articles_path(params[:q])
end
作为提交表单的结果,用户最终会出现在url上
http://www.mysite.com/articles/search/vampire
这不管用吗?你得到了什么?直接转到url是可行的,但按search get是我的,我确实认为我需要对搜索字符串进行一些编码thow,Thank如果我需要使用两个参数,我如何使用这个?
def search_post
redirect_to search_articles_path(params[:q])
end
http://www.mysite.com/articles/search/vampire