Иногда нужно использовать одинаковый код в разных контроллерах. Для этого мы можем создать файл, например app/controllers/concerns/say_hi.rb и поместить в этот файл наш код
module SayHi
private
def hi
@hi = "Hello"
end
end
Code language: Ruby (ruby)
Теперь мы можем вызвать метод ‘hi’ в любом контроллере нашего приложения. Для этого нужно добавить видимость файла в самом контроллере include SayHi и добавить before_action :hi вы можете определить перед каким действием вызывать метод ‘hi’, делается это так before_action :hi, only: [:show, :edit] Ниже пример контроллера с методом ‘hi’
class ProductsController < ApplicationController
include SayHi
before_action :hi
# GET /products/1
# GET /products/1.json
def show
# Значение @hi будет доступно
# И мы сможем получить его во вьюшке
@hi
end
private
end
Code language: Ruby (ruby)