i have user model , course model, , user can upload courses after login.
however, want admin able upload users in case user not savvy enough.
my thought use same create action both user-upload , admin-upload, if statement.
the admin select user before uploads him in users/:id view page:
<%= link_to 'upload course user', new_course_path(user_id: params[:id]), class: 'btn btn-primary' %>
then able see create page parameter:
http://localhost:3000/courses/new?user_id=10
and submit form
<%= form_for(@course, html: {class: "form-group"}) |f| %> ... <%= f.submit "create course", class: 'btn btn-primary' %>
to create action in controller:
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
however i'm never getting user_id params, current_user.id, admin_user's id , that's not good.
how manage pass in user_id parameter controller create action knows i'm trying create user, not myself? there better way handle logic?
thanks!
you can try this.
in form.
<%= form_for(@course, html: {class: "form-group"}) |f| %> <%= hidden_field_tag "course[user_id]", "#{@user_id}" %> <%= f.submit "create course", class: 'btn btn-primary' %>
in controller create method.
def new @user_id = params.has_key?("user_id") ? params[:user_id] | current_user.id ##or #@user_id = params[:user_id] || current_user.id end def create @course = course.new(course_params) ## or #@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 end private def course_params params.require(:course).permit(:user_id) end
Comments
Post a Comment