当我要求获取时,为什么我的form_tag方法是一个帖子?

Bla*_*man 18 forms ruby-on-rails

我的form_tag看起来像:

<%= form_tag(:controller => "users", :action => "confirm", :method => "get") %>
Run Code Online (Sandbox Code Playgroud)

html输出是:

<form accept-charset="UTF-8" action="/users/confirm?method=get" method="post">
Run Code Online (Sandbox Code Playgroud)

它为什么这样做?

tva*_*son 25

我认为这是因为在这种形式下使用时,它假设所有选项都是url选项.尝试.

<%= form_tag( '/users/confirm', :method => :get ) %>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您有两组独立的选项,网址选项和标记选项.

  • +1或者,用散列明确:`<%= form_tag({:controller =>"users",:action =>"confirm"},:method =>"get")%>` (11认同)

rub*_*nce 10

前两个参数form_tagurl_for_optionsoptions.两者都是哈希.所以在你的代码中,整个哈希被视为url_for_options.因此,要分离参数,您必须这样做:

<%= form_tag({:controller => "users", :action => "confirm"}, {:method => "get"}) %>
Run Code Online (Sandbox Code Playgroud)

要么

<%= form_tag({:controller => "users", :action => "confirm"}, :method => "get") %>
Run Code Online (Sandbox Code Playgroud)

参考链接