Rails form_tag重定向路由错误

时间:2012-02-20 09:54:25

标签: ruby-on-rails ruby-on-rails-3

您好我有一个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动作??

1 个答案:

答案 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时,您可以看到它通过读取请求日志而收到的请求类型。

希望有所帮助,否则: