使控制器,路由和隐藏字段按钮在Rails中正常工作

时间:2012-07-24 17:36:06

标签: ruby-on-rails ruby-on-rails-3 forms controller

我想创建一个按钮,以便用户可以注册课程。注册模型属于用户和课程,应该跟踪注册情况。

我将以下代码显示为课程页面上的按钮形式(看起来很好):

<% @enroll = current_user.enrollings.build(course_id: @course.id) %>
<%= form_for(@enroll) do |f| %>  
    <div><%= f.hidden_field :course_id %></div>
    <%= f.submit "Enroll", class: "btn btn-large btn-primary" %>
<% end %>

我有一个用于注册的资源路径,当用户点击该按钮时,页面进入/ enrollings。

这是注册控制器中的代码:

def create    
@course = Course.find(params[:course_id])
current_user.enroll!(@course)
end

当我点击按钮时,收到以下错误消息:

  

ActiveRecord :: RecordNotFound在EnrollingsController #create

中      

无法找到没有ID的课程

为什么不通过表单传递course_id?如何正确设置控制器?

1 个答案:

答案 0 :(得分:1)

请改为尝试:

<div><%= hidden_field_tag "course_id", @course.id %></div>