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中的函数,我不再收到错误。我无法看到语法问题。有什么想法吗?
答案 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环境,所以我不能在这里为你提供完整的答案。您的问题中没有足够的信息可供了解。