简体   繁体   中英

Rails query string in URL?

I have a single text box form on my home page (/).

Right now the way my Rails routes is set up, when I submit this form, it takes me to /search, but it doesn't publish the query string in my url.

In other words, when I enter in "hello" in that form and press submit, I want to end up at "/search?query=hello". I know that "hello" is in params[:query], but how do I get Rails to publish that query string in the landing page URL after I submit the query?

I read the Rails routes guide but that talks about incoming query strings in the URL, not Rails publishing the URL with the query string visible.

Thanks.

My form tag so far:

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

            <% end %>

If I do this, I get /search?method=get, but what I would like to see is /search?query=foo.

You just need define a form with get method instead of post

<% form_tag search_url, :method => :get do %>

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

<% end %>

Make sure that your form's method (as shown in the HTML page that a client would see before submitting the form) is GET not POST. With POST, the params[:query] is hidden from the user (this is often used for login forms, forms that would submit credit cards or other sensitive information). But if you want the query to show in the URL, you need to use the GET method. Rails itself isn't responsible for this behavior, it's all on the web browser's side.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM