【问题标题】:Rails query string in URL?URL中的Rails查询字符串?
【发布时间】:2011-01-02 11:04:50
【问题描述】:

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

现在我的 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 %>

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

【问题讨论】:

    标签: ruby-on-rails string url


    【解决方案1】:

    您只需要使用 get 方法而不是 post 定义一个表单

    <% form_tag search_url, :method => :get do %>
    
        <%=text_field_tag :search %>
        <%= submit_tag %>
    
    <% end %>
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-08-18
        • 2011-11-11
        • 1970-01-01
        • 2017-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-08
        • 2013-11-21
        相关资源
        最近更新 更多