Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 自定义表单的投递路由问题_Ruby On Rails - Fatal编程技术网

Ruby on rails 自定义表单的投递路由问题

Ruby on rails 自定义表单的投递路由问题,ruby-on-rails,Ruby On Rails,我已经添加了自定义路由、自定义控制器代码,并在表单中对自定义路由执行了操作,但是我得到了一个关于路由的错误,即使它在错误消息中显示了路由 表格/视图如下: 视图/调查请求/confirmation.html.erb <%= form_for @survey_request, url: survey_requests_confirm_path do |f| %> <p>Your Email Address: <%= f.text_field :customer_e

我已经添加了自定义路由、自定义控制器代码,并在表单中对自定义路由执行了操作,但是我得到了一个关于路由的错误,即使它在错误消息中显示了路由

表格/视图如下: 视图/调查请求/confirmation.html.erb

<%= form_for @survey_request, url: survey_requests_confirm_path do |f| %>
  <p>Your Email Address: <%= f.text_field :customer_email %></p>
  <%= f.hidden_field :survey_token, value: @survey_request.survey_token %>
  <p>Your survey token: <%= @survey_request.survey_token %></p>
  <p><%= f.submit %></p>
<% end %>
在survey_requests_controller.rb中,我定义了一个方法

def confirm
  #code here to confirm the users email and token
end
当我运行该应用程序时,confirmation.html.erb表单显示良好,包括传递给它的令牌。当我提交表单时,出现以下错误:

No route matches [POST] "/survey_requests/confirm"
但是,当我在同一错误页面上向下滚动时,它会显示路线:

survey_requests_confirm_path    PUT /survey_requests/confirm(.:format)  survey_requests#confirm

有什么建议吗?谢谢

问题在于定义的路由使用PUT方法,而表单路由使用POST方法


将发送“survey\u requests/confirm”的路径更改为“survey\u requests confirm”,或将方法::放入@survey\u request的表单中,url:survey\u requests\u confirm\u path,方法::放置,以便方法匹配。

谢谢!当您从示例站点复制代码而不完全理解它时,就会发生这种情况。
survey_requests_confirm_path    PUT /survey_requests/confirm(.:format)  survey_requests#confirm