現在,我在我的rb文件中有此代碼。它工作得很好:在.rb文件(sinatra)中無法訪問函數中的變量
project = PivotalTracker::Project.find(123456)
get '/' do
@accepted = project.stories.all(:current_state => 'accepted').length
@delivered = project.stories.all(:current_state => 'delivered').length
@finished = project.stories.all(:current_state => 'finished').length
erb :home
end
我想創造一個totalStories
功能,而不是使用具有3條冗長線,冗餘代碼。
所以,我試過如下:
get '/' do
@accepted = totalStories('accepted')
@delivered = totalStories('delivered')
@finished = totalStories('finished')
def totalStories(storyState)
var estimate = project.stories.all(:current_state => storyState).length
return var
end
erb :home
end
有了這個代碼,我得到一個錯誤:
NoMethodError at/
undefined method `totalStories' for #<Sinatra::Application:0x007f89bae6c800>
關於如何解決此錯誤的任何提示?謝謝!
UPDATE: 我感動的方法get
塊外,但現在我得到一個新的錯誤:undefined local variable or method
project'`
的project
變量之外,上面的方法定義。
值得一提的是,我在其他get塊中使用了project
變量。
謝謝kashyap!不幸的是,即使有助手(你的第一個代碼塊),我得到「未定義的局部變量或方法'項目'」現在將嘗試第二種方法。 – tonic 2012-08-10 14:12:30
啊,第一個代碼塊的作品只有當我改變'項目'成爲'$項目'無處不在 – tonic 2012-08-10 14:27:58
雖然這似乎是不好的做法,根據我讀的一些文章? – tonic 2012-08-10 20:50:12