Правильное место для определения переменных, используемых моими шаблонами erb + макеты для стилей HTML?

У меня есть локальная переменная в шаблоне erb:

<% thumbnail_width = 50 %>

Я использую это для определения некоторых миниатюр.

Но теперь я понимаю, что для доступа к этой переменной потребуется несколько шаблонов.

Где я должен переместить его и какой тип переменной должен быть?

Ответ 1

Существует несколько решений в зависимости от того, как эта переменная взаимодействует с средой Rails.

Конфигурации

Вы можете использовать глобальный файл конфигурации (см., например, плагин SimpleConfig). Это предпочтительный вариант, когда переменная может меняться в зависимости от среды.

Константы

Вы можете определить константу, если переменная должна быть доступна во многих разных местах и ​​контекстах. Например, вы можете создать файл

config/initializers/defaults.rb

и напишите там все ваши конфигурации и константы по умолчанию. Определенная здесь константа будет автоматически доступна во всем приложении Rails.

Помощники

Если ваша переменная привязана к определенному разделу приложения, например, к представлению, вы можете воспользоваться помощниками Rails. В вашем конкретном случае вы можете создать помощник изображения в своем приложении application_helper.rb

module ApplicationHelper

  THUMBNAIL_WIDTH = 50  

  def thumbnail_tag(source, options = {})
    image_tag(source, options.reverse_merge(:width => THUMBNAIL_WIDTH))
  end

end

Затем используйте помощник, когда вам нужно создать эскиз, а не копировать одну и ту же логику много раз в каждом файле.