Вы вызываете 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
location.html.erb
<% @locations.each do |location| %>
<%= # do something with 'location' %>
<% end %>
Если вы хотите использовать это внутри вашего application.html.erb
, вы можете немного упростить его..
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 %>
Ответ сводится к логикеи чтобы действительно понять, что именно вы ищете, вероятно, потребуется больше деталей.