在Ruby on Rails 3(目前正在使用Beta 4)中,我看到当使用form_tag或form_for帮助时,会出现一个名为_snowman☃(Unicode\x9731)的隐藏字段.
那么,这是为了什么?
我的主页上有一个搜索查询表单(/)
<% form_tag(search_path, :method => :get) do %>
<%= text_field_tag 'query' %>
<%= submit_tag "Search", :name => nil%>
<% end %>
Run Code Online (Sandbox Code Playgroud)
当我提交此搜索表单时,我想结束(/ search?query = foo).但是,现在我得到/搜索?utf8 =%E2%9C%93&query = foo.那个utf8参数在那里做什么?我怎么能摆脱它?
谢谢.
我只是想创建一个简单的选择菜单,将您带到特定的URL.到目前为止,我有这样的事情:
# haml
= form_tag new_something_path, method: :get do
= select_tag :type, options_for_select(my_array)
= submit_tag 'New Something'
Run Code Online (Sandbox Code Playgroud)
但是,当我提交表单时,我获得了UTF8参数以及带有按钮文本的"commit"参数.
如何删除UTF8并提交参数?
我有一个搜索表单,有很多选项,提交到Get请求的路由.URL是这样的:
http://localhost:3000/restaurants/search?utf8=%E2%9C%93&city=&cuisine=&number_of_people=&query=hello
Run Code Online (Sandbox Code Playgroud)
有更多的参数.我想让它更干净,比如删除所有空白的参数.
这样的事情:(基本上删除所有空白的参数)
http://localhost:3000/restaurants/search?query=hello
Run Code Online (Sandbox Code Playgroud)
这该怎么做?
一种方法可以使用
CGI::parse("foo=bar&bar=foo&hello=hi")
Run Code Online (Sandbox Code Playgroud)
给你
{"foo"=>["bar"], "hello"=>["hi"], "bar"=>["foo"]}
Run Code Online (Sandbox Code Playgroud)
首先在用户之间重定向用户,并在操作之间检查哪些参数是空白的并删除它们然后最终重定向他的实际搜索操作.但这听起来很蹩脚.我怎样才能以更好的方式做到这一点?