语法错误,意外',',期待')'用Rails4

时间:2014-05-17 01:16:53

标签: ruby-on-rails-4

Rails 4.1& Ruby 2.0

这是我在lib / global_methods.rb中的内容:

def admin_status? (id = nil)
  role_value = I18n.t 'admin_role'
  unless id
    current_user.role == role_value
  else
    determine_user_role (id, role_value)
  end
end

def determine_user_role (id, role_value)
  user = User.find_by id: id
  user.role == role_value
end

这是我在application_controller.rb

中的内容
class ApplicationController < ActionController::Base

  protect_from_forgery with: :exception

  require ('json')
  require ('csv')
  require ('global_methods')

end

我收到以下错误:

syntax error, unexpected ',', expecting ')'

它指向application_controller.rb中的第7行作为罪魁祸首。如果删除global_method.rb中的函数,我不再收到错误。我无法看到语法问题。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

它不再有效(因为1.8.7我认为)调用方法名称与任何括号之间有空格的多方法:

~ >rvm 1.8.7
~ >ruby -ve'def bs(a,b) end; bs (1,2)'
ruby 1.8.7 (2013-06-27 patchlevel 374) [i686-darwin12.5.0]
-e:1: warning: don't put space before argument parentheses
~ >rvm 2.1.1
~ >ruby -ve'def bs(a,b) end; bs (1,2)'
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0]
-e:1: syntax error, unexpected ',', expecting ')'
def bs(a,b); end; bs (1,2)
                        ^
-e:1: warning: possibly useless use of a literal in void context
~ >ruby -ve'def bs(a,b) end; bs(1,2)'
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin12.0]

这里的另一个answer from StackOverflow触及了背后的红宝石语法。

答案 1 :(得分:0)

抱怨你的I18n翻译。当我重写代码时,在global_methods.rb中定义admin_status?()之前放置determine_user_role()的定义,而不是仅使用标准字符串进行'admin_role'的I18n转换,它可以正常工作。

不幸的是,我并不熟悉i18n gem或者你需要如何插入和配置你的Rails环境,所以我不能在这里为你提供完整的答案。您的问题中没有足够的信息可供了解。