2013-02-17 102 views
0

剛開始使用Rails時,弄清楚如何訪問我的模型中的方法。從模型中訪問控制器的方法

在控制器我嘗試的follwoing: @testString = Work.testMethod

class Work < ActiveRecord::Base<br> 
    def testMethod 
    return "string from test method" 
    end 
end 

這導致 '在WorksController#指數NoMethodError'(未定義的方法)。 我希望得到一些幫助。

And ..爲什麼在腳手架'工作'的時候,rails爲's'添加控制器名稱?型號名稱是工作和控制器是:works_controller

回答

0

您正在交談的概念引入class方法。該方法需要在關鍵字的幫助下自定義Work類。

class Work < ActiveRecord::Base 
    def self.testMethod 
    return "string from test method" 
    end 
end 

要回答你的第二個問題,Rails的是一個固執己見框架,迫使複數化您的控制器和表名的模式:

它可以如下完成。這真的是爲了更正確的語法。

如果你想調整複數,你可以通過使用Inflections來實現。

0

使用self

class Work < ActiveRecord::Base 
    MY_MESSAGE = "ALL THE BEST" 

    def self.testMethod 
    return "string from test method" 
    end 
end 

self用於調用一流水平的方法。如果您使用instance_level方法,你需要創建的class實例,那麼你可以調用方法的對象

Work.testMethod #=> "string from test method" 
Work::MY_MESSAGE #=> "ALL THE BEST" 

:現在你可以在任何地方調用它的下面。但是當你想創建新記錄時創建模型實例,所以當你不想創建記錄時,我更喜歡使用self方法。

如果有記錄,你可以調用:

class Work < ActiveRecord::Base 
    def testMethod 
    return "string from test method" 
    end 
end 

work_record = Work.find(your_condition) 
work_record.testMethod 
+0

thx,這個工程很簡單。這是如何與模型中聲明的變量一起工作的?從控制器訪問他們我的意思是。 – 2013-02-17 16:10:57

+0

你的意思是'常量'變量? – codeit 2013-02-17 16:14:59

+0

基於上面的例子,我能夠訪問我的模型中的方法,thx!關於這個變量,我的意思是一個對模型來說是本地的變量。通過模型中的方法進行操作。 – 2013-02-17 20:13:52

相關問題