无法在rails控制器

时间:2016-04-22 06:18:18

标签: ruby-on-rails

我遇到错误Couldn't find Course with 'id'=

这是manage_users的课程控制器功能:

def manage_users
  @course_users = (@course.users + (User.where(admin: true))) - [current_user]
  @other_users =  @users.where(admin: false) - (@course_users + [current_user]) 
end

private
 # Use callbacks to share common setup or constraints between actions.
 def set_course
  @course = Course.find(params[:id])
 end
 # Never trust parameters from the scary internet, only allow the white list through.
 def course_params
  params.require(:course).permit(:name, :start_date, :end_date, :branch_id)
 end

的routes.rb

resources :courses do
  get 'manage_users'
  put 'add_user'
end

enter image description here

4 个答案:

答案 0 :(得分:2)

尝试更改set_course方法:

def set_course
 @course = Course.find(params[:course_id])
end

您正在course_id传递参数,因此您应该像params[:course_id]一样获取它。

目前您正在params[:id]进行此操作,因此无法使用此ID找到课程

答案 1 :(得分:0)

before_filter Course找不到id=1 {/ 1}}。

def set_course
  @course = Course.find(params[:id])
end

课程ID正在course_id参数中传递。

def set_course
  @course = Course.find(params[:course_id])
end

答案 2 :(得分:0)

尝试更新您的routes.rb文件:

resources :courses do
  member do
    get 'manage_users'
  end
end

答案 3 :(得分:-1)

它适用于所有行动

@course = Course.find_by(id: [params[:id], params[:course_id]])