我的主页上有一个文本框表单(/)。
现在设置我的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。
答案 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浏览器方面。