我通常有多个浏览器窗口,它总是没有弹出我想要的那个.
我可以在浏览器中禁用离子发球功能吗?
我有一个用户模型和一个课程模型,用户登录后可以自己上传课程。
但是,我希望管理员能够为用户上载,以防用户不够聪明。
我的想法是使用if语句对user-upload和admin-upload使用相同的create动作。
管理员会先选择用户,然后再在users /:id视图页面中为其上载:
<%= link_to 'Upload Course for User', new_course_path(user_id: params[:id]), class: 'btn btn-primary' %>
Run Code Online (Sandbox Code Playgroud)
然后,我可以看到带有参数的创建页面:
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' %>
Run Code Online (Sandbox Code Playgroud)
到控制器中的create动作:
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
Run Code Online (Sandbox Code Playgroud)
但是,我从来没有得到过user_id参数,总是只有current_user.id,这是admin_user的ID,这不好。
我如何设法将user_id参数传递给控制器的create操作,以便它知道我要为另一个用户(而不是我自己)创建操作?有比我的逻辑更好的方法吗?
谢谢!