Rails表单使用GET请求:如何删除按钮和utf8参数?

时间:2013-03-28 19:29:15

标签: ruby-on-rails

我只是想创建一个简单的选择菜单,将您带到特定的URL。到目前为止,我有这样的事情:

# haml
= form_tag new_something_path, method: :get do
  = select_tag :type, options_for_select(my_array)
  = submit_tag 'New Something'

但是,当我提交表单时,我会获得UTF8参数以及带有按钮文本的“commit”参数。

如何删除UTF8并提交参数?

2 个答案:

答案 0 :(得分:39)

删除commit参数相对简单,您需要指定输入没有名称:

submit_tag 'New Something', name: nil

关于UTF-8参数......它有一个重要的目的。一旦理解了the purpose of the Rails UTF-8 param,由于某种原因你还需要删除它,解决方案比你想象的更容易......只是不要使用form_tag帮助器:

# haml
%form{action: new_something_path, method: 'get'}
  = select_tag :type, options_for_select(my_array)
  = submit_tag 'New Something', name: nil

答案 1 :(得分:0)

您可以通过添加utf8的{​​{1}}选项(以及enforce_utf8: false)来摆脱form_tag参数,如下所示:

form_form

(感谢@Dmitry指出)

但是请确保您不需要它:What is the _snowman param in Ruby on Rails 3 forms for?(我不确定它是否与= form_tag new_something_path, method: :get, enforce_utf8: false do 表格实际相关。)

由提交按钮生成的其他参数可以通过在GET上设置name: false选项来删除(对于submit_tagsubmit也适用)。

form_for