Rails 4.1,Ruby 2.1,设计,为什么 'syntax error, unexpected tConstant' 在我的 .where() 中有多个条件?
Rails 4.1, Ruby 2.1, Devise, Why 'syntax error, unexpected tConstant' in my .where() with multiple conditions?
我从类似的帖子中看到,这通常是前一行中缺少某些结束字符的情况,但我在这里没有看到。 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
运算符是&&
或and
,不是AND
。
然而,这不是问题的根本原因:您似乎对 Hash
文字的一般语法感到困惑。 Hash
文字中的条目由逗号分隔,而不是由运算符分隔:
@courses = Course.where(user_id: current_user.id, school_id: @school.id)
另请注意,if
是一个表达式,因此 returns 是一个值,因此您可以轻松将该方法重构为
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
你可以试试这个:
@courses = Course.where('user_id = ? AND school_id = ?',current_user.id , @school.id)
我从类似的帖子中看到,这通常是前一行中缺少某些结束字符的情况,但我在这里没有看到。 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
运算符是&&
或and
,不是AND
。
然而,这不是问题的根本原因:您似乎对 Hash
文字的一般语法感到困惑。 Hash
文字中的条目由逗号分隔,而不是由运算符分隔:
@courses = Course.where(user_id: current_user.id, school_id: @school.id)
另请注意,if
是一个表达式,因此 returns 是一个值,因此您可以轻松将该方法重构为
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
你可以试试这个:
@courses = Course.where('user_id = ? AND school_id = ?',current_user.id , @school.id)