繁体   English   中英

ruby on rails 5 lambda语法错误,意外=>,期望')'

[英]ruby on rails 5 lambda syntax error, unexpected =>, expecting ')'

我有一个迁移文件create_subject (其代码如下), Subject类包含使用lambda语法的范围。 当我调用Subject.visible ,出现语法错误。

class CreateSubjects < ActiveRecord::Migration[5.0]
  def up
    create_table :subjects do |t|
      t.string "name"
      t.integer "position"
      t.boolean "visible", :default=>false

      t.timestamps
    end
  end

  def down
    drop_table :subjects
  end
end

这是我的学科课

控制台错误日志

irb(main):003:0> Subject.visible
SyntaxError: C:/Users/SS/Sites/simple_cms/app/models/subject.rb:3: syntax error, unexpected =>, expecting ')'
scope :visible, -> { where (:visible => true) }
                                   ^
C:/Users/SS/Sites/simple_cms/app/models/subject.rb:4: syntax error, unexpected =>, expecting ')'
scope :invisible, -> { where (:visible => false) }
                                     ^
C:/Users/SS/Sites/simple_cms/app/models/subject.rb:7: syntax error, unexpected '|'
scope :search, -> {|query| where (["name LIKE ?", "%#{query}%"]) }
                ^
C:/Users/SS/Sites/simple_cms/app/models/subject.rb:7: syntax error, unexpected ( arg, expecting keyword_do or '{' or '('
scope :search, -> {|query| where (["name LIKE ?", "%#{query}%"]) }

调用方法时,请勿在打开括号之前放置空格。 应该是这样

class Subject < ApplicationRecord
  scope :visible, -> { where(:visible => true) }
  scope :invisible, -> { where(:visible => false) }
  scope :sorted, -> { order("position ASC") }
  scope :search, ->(query) { where(["name LIKE ?", "%#{query}%"]) }
  # and so on ...
end

如果要将查询放入管道|query| 然后使用:

scope :search,lambda{|query| where(["name LIKE ?", "%#{query}%"]) }

代替

scope :search, ->(query) { where(["name LIKE ?", "%#{query}%"]) }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM