2010-11-05 79 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浏览器端。