2017-04-17 102 views
0

我试图在表单上使用collection_select将用户设置为课程。 我的多对多关系完美,但我不明白我应该在我的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_idcurrent_user.id的价值,但我不知道如何设置我的course_id

+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拍摄)

你的情况

你错过了对象PARAM,试试这个:

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> 

你可以d更多来自api.rubyonrails.org内的文档FormOptionsHelper

+1

感谢您的回答!其实你是对的。只要你可以用这个编辑其他人:'%= collection_select(@course_user,:course_id,Course.all,:id,:name,:prompt => true)%>'删除f。和@course_user作为对象参数!再次感谢 ! –