Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby On Rails > Вызов метода контроллера из шаблона


Автор: Devider 25.2.2011, 21:00
Есть application.html.erb в котором описан шаблон и есть application_controller.rb в котором определен метод foo:
Цитата

class ApplicationController < ActionController::Base
  protect_from_forgery
  def foo
    "foo!"
  end
end

 Пытаюсь вызвать его в шаблоне как <%= foo%>, получаю
Цитата

NameError in Main#index
Showing /home/user/projects/zdrava/app/views/layouts/application.html.erb where line #57 raised:
undefined local variable or method `foo' for #<#:0x00000002e22258>

Причем если сделать foo методом класса (def self.foo) то <%= ApplicationController.foo%> чудесно работает. 
Подскажите пожалуйста, как вызвать метод из шаблона?    

Автор: WarHog 27.2.2011, 00:42
Devider, теоретически ты можешь это сделать примерно так

Код

class ApplicationController < ActionController::Base
  protect_from_forgery
end

class MyController < ApplicationController
def foo
  @controller = self
  "foo"
end


и в шаблоне <%= controller.foo %>,
но я бы так категорически не рекомендовал делать  smile

Автор: Goganchic 12.5.2011, 14:01
может быть имеет смысл сделать что-то вроде:
Код

class ApplicationController < ActionController::Base
  def foo
    "something"
  end

  helper_method :foo
end


после этого метод foo можно беспроблемно вызывать во вьюхе

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)