Rails - 无法将表单连接到控制器操作

时间:2013-11-19 19:27:41

标签: ruby-on-rails forms model-view-controller ruby-on-rails-4 form-helpers

我需要创建一个向控制器发送两个隐藏字段的表单。表单没有绑定到任何特定对象,我只需要获取控制器的输入。这是我的观看代码:

<%= 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

如何让表单转到控制器?

1 个答案:

答案 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|