Rails在URL中查询字符串?

时间:2010-11-05 07:53:21

标签: ruby-on-rails string url

我的主页上有一个文本框表单(/)。

现在设置我的Rails路由的方式,当我提交此表单时,它会将我带到/ search,但它不会在我的url中发布查询字符串。

换句话说,当我以该表格输入“你好”并按提交时,我想以“/ search?query = hello”结束。我知道“hello”在params [:query]中,但是如何在提交查询后让Rails在着陆页网址中发布该查询字符串?

我读了the Rails routes guide但是它讨论了URL中的传入查询字符串,而不是Rails发布带有查询字符串的URL。

感谢。

到目前为止我的表单标记:

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

            <% end %>

如果我这样做,我会/ search?method = get,但我想看到的是/ search?query = foo。

2 个答案:

答案 0 :(得分:4)

您只需要使用get方法而不是post

来定义表单
<% form_tag search_url, :method => :get do %>

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

<% end %>

答案 1 :(得分:0)

确保您的表单方法(如客户在提交表单之前会看到的HTML页面中所示)是GET而不是POST。使用POST时,params[:query]对用户是隐藏的(这通常用于登录表单,提交信用卡或其他敏感信息的表单)。但是,如果您希望查询显示在URL中,则需要使用GET方法。 Rails本身不对此行为负责,所有这些都在Web浏览器方面。