【发布时间】:2015-06-03 09:27:08
【问题描述】:
我有一个用户模型和一个课程模型,用户登录后可以自己上传课程。
但是,我希望管理员能够为用户上传,以防用户不够精明。
我的想法是对 user-upload 和 admin-upload 使用相同的 create 操作,并带有 if 语句。
管理员会在为他上传之前在 users/:id 视图页面中选择用户:
<%= link_to 'Upload Course for User', new_course_path(user_id: params[:id]), class: 'btn btn-primary' %>
然后我可以看到带有参数的创建页面:
http://localhost:3000/courses/new?user_id=10
我提交此表格
<%= form_for(@course, html: {class: "form-group"}) do |f| %>
...
<%= f.submit "Create Course", class: 'btn btn-primary' %>
到控制器中的创建操作:
def create
@course = Course.new(course_params)
@course.user_id = params[:user_id] || current_user.id
if @course.save
redirect_to course_path(@course), notice: 'The course has been created successfully!'
else
render 'new'
end
但是我从来没有得到 user_id 参数,总是只有 current_user.id,这是 admin_user 的 id,这不好。
我如何设法将 user_id 参数传递给控制器创建操作,以便它知道我正在尝试为另一个用户而不是我自己创建?有没有比我的逻辑更好的方法来处理这个问题?
谢谢!
【问题讨论】:
-
您可以使用
hidden_field将user_id传递给create操作 -
@Stephen Leung,请发布您的控制器新方法和 course_params 方法
标签: ruby-on-rails