vladamir
@vladamir

Как можно сделать общий view для всех методов контроллера?

Есть контролллер:

def campaigns
    get_calculate_stats(Campaign)
    render 'stats'
  end

  def sources
    get_calculate_stats(Source)
    render 'stats'
  end

  def offers
    get_calculate_stats(Offer)
    render 'stats'
  end

Можно ли как-то с помощью фильтров, или еще как-то сделать так, чтобы не писать в каждом экшене render 'stats', не могу найти ответ. Спасибо.
  • Вопрос задан
  • 158 просмотров
Решения вопроса 1
viktorvsk
@viktorvsk
module Bar

  %w{one two three}.each do |n|

    define_method n do
      super()
      print " BAR"
    end

  end

end

class Foo
  prepend Bar

  def one
    print '1'
  end

  def two
    print '2'
  end

  def three
    print '3'
  end
end

Foo.new.one # 1 BAR
Foo.new.two # 2 BAR
Foo.new.three # 3 BAR


Но НЕ нужно так делать. Вообще, на каждый экшен должен быть свой view. И написать render - не так сложно.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
Могу предположить использование хука after_action
after_action :render, only: [:campaigns, :sources, :offers]

Но я не рельсовик
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы