2016-04-22 59 views
0

我面臨錯誤Couldn't find Course with 'id'=找不到'id'= in rails controller

這裏是我的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

+0

將代碼發佈到您使用'set_course'方法的地方。 – HashRocket

回答

2

嘗試改變set_course方法:

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

你傳入course_id params中,所以你應該像params[:course_id]去取。

現在你被params[:id]做,所以當然不能用這個ID

+0

是的,但如果我改變上面,那麼我的創建和編輯行動將不會像在 {「id」=>「1」} – user3637820

+0

@ user3637820那樣通過,您可以相應地更改您的視圖代碼。你正在做的就像'your_path(course_id:@ course.id)',把它改成'your_path(id:@ course.id)'。 **或**你可以使用'before_action'或'before_filter' – dp7

+0

添加另一個方法並調用'manage_users'的回調,謝謝,這很有效。我也必須更新jeff提到的路線 – user3637820

1

before_filter找不到Courseid=1

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

Course ID正在通過course_id參數。

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

嘗試發現更新您的routes.rb文件:

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

它將爲所有操作

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