我从类似的帖子中看到,它通常是前一行中缺少一些关闭字符的情况,但我在这里看不到它。 Courses资源嵌套在Schools中,我可以打印出user_id和school.id。
错误似乎出现在具有多个条件的Course.where子句中(user_id:current_user.id AND school_id:@ school.id) 上面的单条件where子句似乎工作正常。
courses_controller.rb
class CoursesController < ApplicationController
before_action :set_school
helper_method :calculated_grade_stub
# GET /courses
# GET /courses.json
def index
if @school.nil?
@courses = Course.where(user_id: current_user.id)
else
@courses = Course.where(user_id: current_user.id AND school_id: @school.id)
end
end
答案 0 :(得分:2)
运营商为&&
或and
,而不是AND
。
但是,这不是问题的根本原因:您似乎对Hash
文字的一般语法感到困惑。 Hash
文字中的条目用逗号分隔,而不是由运算符分隔:
@courses = Course.where(user_id: current_user.id, school_id: @school.id)
另请注意if
是一个表达式,因此返回一个值,因此您可以轻松地将该方法重构为
def index
@courses = if @school.nil?
Course.where(user_id: current_user.id)
else
Course.where(user_id: current_user.id, school_id: @school.id)
end
end
答案 1 :(得分:0)
你可以试试这个:
@courses = Course.where('user_id = ? AND school_id = ?',current_user.id , @school.id)