You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:02:15