我正在尝试在表单上使用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
。
答案 0 :(得分:0)
这个函数params是
collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})
在你的情况下你错过了对象参数,试试这个:
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上的文档中阅读更多内容