你調用類範圍內get_locations
,但該方法是一個實例方法,而不是一個類的方法。例如,如果您使用了def self.get_locations
,那麼您將提供一個類方法,其中一個類方法可以在類範圍內使用(在定義它之後,而不是像以前那樣)。
這裏的問題是邏輯,這個方法是什麼?你打算如何使用@locations
?如果要進入應用程序視圖,則應將此方法放入ApplicationHelper
模塊中,並從相關操作中調用它。如果你想它在另一個控制器上另外的看法,你想用你的@locations
方法locations
裏面,也許你的設置看起來是這樣的:
PagesController
class PagesController < ActionController::Base
def locations
@locations = Location.where(:active => true).order('name').all
end
end
位置.html.erb
<% @locations.each do |location| %>
<%= # do something with 'location' %>
<% end %>
如果你想使用這個裏面你application.html.erb
可以對mplify它相當一些..
的ApplicationController
class ApplicationController < ActionController::Base
protect_from_forgery
def locations
Location.where(:active => true).order('name').all
end
end
application.html.erb
<% locations.each do |location| %>
<%= # do something with location %>
<% end %>
答案歸結爲邏輯,和真正找出你尋找什麼,更多的細節可能會被要求。
@@位置幾乎可以肯定不是你想要的。它是一個真正的類變量,它在Ruby中是在類的所有實例之間共享的,*包括子類*,並且可能會有一些非常奇怪的後果。 – karmajunkie 2010-12-07 21:01:03
Woops,注意到(和編輯)。謝謝。 – markquezada 2010-12-07 21:06:34