0

我是Rails的新手,我試圖理解一個基本概念。Rails:創建靜態字符串類

我想創建一個只包含靜態字符串變量的類,我可以在控制器中調用它們。我想通過在應用程序目錄下創建一個字符串文件夾來實現此目的。後來,當我嘗試從控制器的指數調用它(但我不覺得功能或控制器將此事上我失敗了,我創建了一個名爲String類

class Strings 
@testString="this is my test string" 
end 

更高版本。 ?爲什麼我不能達到它我必須申請高清self.testString所有的時間

回答

1

我想創建它們作爲方法或常量:

class Strings 

    TESTCONST = "this is my test string" 

    def self.test_string 
    "this is my test string" 
    end 

end 

使用它們:Strings.test_strings或Strings :: TESTCONST

+0

非常感謝你的有用答案。那麼這個常量需要寫在大寫字母上? – Ali

+1

如果'Strings'是一個模塊而不是一個類,那將是更合適的,因爲你永遠不會實例化它。我個人更喜歡常量方法。 – numbers1311407

+0

@Ali正確,常量都在上面。 – iouri

0

假設你在app/models下有一個字符串文件夾。應用程序/模型下的其中一個類將是ErrorMessages。

一種方法是使用常量。這是常量是在ruby中設計的。 所以文件的app /型號/串/ error_messages.rb是:

class Strings::ErrorMessages 
    TEST_STRING = "this is my test string" 
end 

或者,你可以有一個cattr_reader,其中,app /型號/串/ error_messages.rb是:

class Strings::ErrorMessages 
    cattr_reader :test_string 

    @test_string = "this is my test string" 
end 

或者你可以讓一個方法返回只讀字符串。

class Strings::ErrorMessages 
    def self.test_string 
    "this is my test string" 
    end 
end 
+0

#2不正確,因爲'attr_reader'定義了實例上的方法,並且您正在爲該類指定一個實例變量。 – numbers1311407

+0

非常感謝您的回答。你還會添加如何能夠調用這個變量。像'user = Strings.TEST_STRING'? – Ali

+0

從評論中編輯的答案將從ErrorMessages.test_string調用。 –