Rails form_tag路由匹配错误求助:按钮跳转pages_controller动作失败
解决Rails表单路由错误,跳转到pages#calculeaza动作
嘿,我来帮你搞定这个路由匹配失败的问题~ 你的代码里有两个关键问题,咱们一步步来修正:
1. 修正form_tag的控制器参数
你在form_tag里写的:controller => '/pages_controller'是错误的。Rails里指定控制器的时候,不需要加_controller后缀,正确的控制器名是pages(对应pages_controller.rb)。
修正后的Submultimi.html.erb代码:
<%= form_tag({:controller => 'pages', :action => 'calculeaza'}, :method => "post") do %> <%= text_field_tag :field1 %> <%= submit_tag "Button" %> <% end %>
2. 确保路由配置正确
Rails需要明确知道哪个URL对应哪个控制器动作,所以你需要在config/routes.rb里添加对应的POST路由:
添加这一行代码:
post 'pages/calculeaza', to: 'pages#calculeaza'
更优雅的方式(推荐)
可以给路由起个名字,这样后续用路由辅助方法更方便:
post 'calculeaza', to: 'pages#calculeaza', as: :calculeaza
然后form_tag可以简化成:
<%= form_tag calculeaza_path, method: :post do %> <%= text_field_tag :field1 %> <%= submit_tag "Button" %> <% end %>
为什么之前会报错?
- 控制器参数写错:带了
_controller后缀,Rails找不到对应的控制器路由 - 缺少路由配置:没有在
routes.rb里声明POST请求到pages#calculeaza的规则,所以Rails不知道该怎么处理这个请求
这样修改后,点击按钮就能正常触发calculeaza动作,执行redirect_to '/combinari'啦~
内容的提问来源于stack exchange,提问作者JERbyu
相关产品推荐
相关产品推荐

