这就是我所拥有的,但我遇到了无效的语句错误。我对ruby和rails非常环保,所以我认为这可能是语法错误。想法?
谢谢!
products_controller:
def index
if Rails.env.development? == "development"
name_env = "name LIKE ?"
else
name_env = "name ilike ?"
end
if params[:q]
search_term = params[:q]
@products = Product.where(name_env, "%#{search_term}%")
else
@products = Product.all
end
end
答案 0 :(得分:2)
问题是你问Rails它是否处于开发模式而Rails用true响应(这与“开发”不同)
IRB> Rails.env.development? =>真的
你可以做的是在Rails.env之后删除开发,这样它就等于String“development”
IRB> Rails.env => “发展”
或者只是删除自Rails.env.development以来与字符串“开发”比较的部分?返回一个布尔
答案 1 :(得分:1)
您的代码存在一些问题:
Rails.env.development? == "development"
不正确,我认为它应该是Rails.env.development?
,因为Rails.env.development?
已经返回true / false 总之,您的代码将是:
def index
name_env = if Rails.env.development?
"name LIKE '%?%'"
else
"name ilike '%?%'"
end
search_term = params[:q]
@products = if search_term
Product.where(name_env, search_term)
else
Product.all
end
end
答案 2 :(得分:0)
Rails.env.development? ==“开发”在Rails.env.development开发中会是错误的吗?在开发中会是真的