我想知道为什么
<%= form_tag( { :action => "/search", :method => "get" }, :class => "span4" ) do %>
...
<% end %>
给出以下错误?
No route matches [POST] "/assets"
我注意到这是因为/ search。如果我把代码重写为......
<%= form_tag( { :action => "search", :method => "get" }, :class => "span4" ) do %>
...
<% end %>
没有/ search,它正确调用我的控制器方法。谁能解释为什么?感谢
答案 0 :(得分:3)
这就是你的意思:
<%= form_tag( "/search", :method => "get" , :class => "span4" ) do %>
...
<% end %>
如果form_tag
的第一个参数是您给出的散列,它会在幕后传递给url_for
,:action
将{{1}}解释为路径的动作部分它可以反向映射。
由于您(我猜)想要传递一个普通的URL,只需将其作为第一个arg的字符串传递。
更多信息here当然:)
答案 1 :(得分:1)
“:action”应该收到“action”的名称,例如:“create”,“update”或“destroy”
:action => "/search"
这里“/ search”不是名称,而是“url”,这是不合法的。
不过,我建议您使用xx_url而不是{:action =&gt; “”,:controller =&gt; “}},例如<%= form_tag "/search", :method => "get" %>
或
# you defined "search_path" in config/routes.rb
<%= form_tag search_path, :method => "get" %>