我需要创建一个向控制器发送两个隐藏字段的表单。表单没有绑定到任何特定对象,我只需要获取控制器的输入。这是我的观看代码:
<%= form_tag(controller: "projects", action: "change_state_from_posting_to_actual_job") do |f| %>
<div><%= f.hidden_field_tag :relationship_id, value: relationship.id %></div>
<div><%= f.hidden_field_tag :project_id, value: project.id %></div>
<%= f.submit "Apply", class: "btn btn-large btn-primary" %>
<% end %>
我收到错误:
No route matches {:action=>"change_state_from_posting_to_actual_job", :controller=>"projects"}
但我肯定有一个控制器和动作与这些名称(控制器实际上是projects_controller,但我已经尝试过了。我也尝试过ProjectsController)。
这是我的路线:
get 'change_state', to: 'projects#change_state_from_posting_to_actual_job', as: :change_state
如何让表单转到控制器?
答案 0 :(得分:0)
您的路线只是/change_state
。删除controller
并指定路线。
form_tag('/change_state') do |f|
您错过了路线的id
组件(假设change_state
对特定项目进行操作)。
使用form_for
代替form_tag
...
form_for [project, :change_state] do |f|
或提供id
网址选项的form_tag
组件:
form_tag(id: project.id, controller: 'projects', action: 'change_state') do |f|