如何将collection_select与参数一起使用

时间:2017-04-17 17:33:04

标签: ruby-on-rails ruby activerecord

我正在尝试在表单上使用collection_select将用户设置为课程。 我的多对多关系完美无缺,但我不明白我应该在collection_select中加入什么。

我有这个:

控制器:

def create
    @course_user = CoursesUser.new(course_params)
    @course_user.save
    redirect_to :back
end

def course_params
    params.permit(:course_id, :user_id)
end

查看:

<%= form_for lecturer_path do |f| %>
    <%= f.collection_select(:course_id, Course.all, :id, :name, :prompt => true) %>
    <%= hidden_field_tag :user_id, current_user.id %>
    <%= f.submit %>
<% end %>

我使用user_id的值设置current_user.id,但我不知道如何设置course_id

1 个答案:

答案 0 :(得分:0)

这个函数params是 collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

(摘自http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select

在你的情况下你错过了对象参数,试试这个:

collection_select(@course_user, :course_id, Course.all, :id, :name, :prompt => true)

结果应该是

<select name="courses_user[course_id]" id="courses_user_course_id">
  <option value="">Please select</option>
  <option value="1">Random Course</option>
  <option value="2">Random Course 2</option>
  <option value="3">Random Course 3</option>
</select>

您可以在 FormOptionsHelper

内的api.rubyonrails.org上的文档中阅读更多内容