您好我有一个form_tag,我想转到我实施的控制器的某个操作:
<%= form_tag(:controller => "admins", :action => "check_in") do %>
<%= hidden_field_tag :direction, params[:direction] %>
<%= hidden_field_tag :sort, params[:sort] %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
但它不起作用,它重定向到管理员/ check_in正确的路由泰国是我想要重定向的但是rails将“无路由匹配”/ admins / check_in“”错误。我不明白,因为这条路线是正确的,如果我在浏览器“http:// localhost:3000 / admins / check_in”中输入它是有效的。如何更正它以重定向管理员控制器check_in动作??
答案 0 :(得分:2)
我认为这是在表单提交时使用GET进行路由和POST的情况。
如果你运行rake routes
,你应该看到路线是GET,对吗?当表单提交它时发出POST请求。要么像这样制作form_tag:
form_tag({:controller => "admins", :action => "check_in"}, :method => "get")
或在routes.rb文件中将路由更改为POST,如下所示:
post "admins/check_in" => "admins#check_in"
当您在终端中使用rails s
启动rails时,您可以看到它通过读取请求日志而收到的请求类型。
希望有所帮助,否则: