2014-05-17 60 views
1

的Rails 4.1 &紅寶石2.0語法錯誤,意外 '',預計 ')' 與Rails4

下面是我在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

沒有嚴格相關,但基本上沒有人把parens放在「要求」的參數上。爲了便於閱讀,我建議不要這樣做。 –

+0

是的,我剛開始沒有聖殿,但是在我複製代碼的時候,我花了大約一個小時的時間嘗試不同的事情來診斷問題。我會回到沒有parans。它更具可讀性 –

回答

1

它不再有效(因爲1.8.7我相信)來調用多ARG法的方法名稱和任何括號之間的空間:

~ >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是在Ruby語法倒是背後這個。

+0

是的,這解決了這個問題。 –

0

這是抱怨你的I18n翻譯。當我重寫你的代碼時,將admin_status?()的定義之前的determine_user_role()的定義放在global_methods.rb中,而不是使用標準字符串進行'admin_role'的I18n轉換,它可以正常工作。

不幸的是,我並不熟悉i18n gem或者您需要如何將它插入並配置爲您的Rails環境,因此我無法在此爲您提供完整的答案。你的問題中沒有足夠的信息要知道。

+0

I18n是核心軌道環境的一部分,配置/設置也不多。無需任何設置即可使用「開箱即用」。問題不是I18n,而是我在方法名稱和圍繞參數的括號之間留有空格。如果你這樣做,Ruby post 1.8失敗。使用I18n與爲代碼編寫函數一樣重要。 –

+0

對於它的價值,我在沒有Rails空間的情況下運行代碼。試圖使用i18n翻譯,我得到了報告的語法錯誤。 W/O試圖翻譯它工作正常。所以,根據你所處的環境,你代碼中的2個不同的東西可能會產生你得到的同樣的錯誤。 Ruby轉換器的錯誤報告沒有指定實際的違規代碼行,而是對所需外部文件的引用也沒有幫助。 – alpartis

相關問題