Рубрики
Agile Web Development with Rails 6 Ruby on Rails Книги Программирование

Rails concerns

Иногда нужно использовать одинаковый код в разных контроллерах. Для этого мы можем создать файл, например app/controllers/concerns/say_hi.rb и поместить в этот файл наш код

module SayHi
  private

  def hi
    @hi = "Hello"
  end
endCode 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)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *