Я выполнил это, сначала создав модель для всех будущих управляемых полей cms и перенеся значения по умолчанию. Поля имеют статическую переменную :name
, которая определяется разработчиком (мной). Затем я называю их по имени в своих представлениях с application_helper. И это все, мертвая простая функциональность CMS. Теперь, когда я добавляю поле, я могу добавить его на любую страницу и управлять им на одной странице моей существующей административной панели под названием «CMS».
create_site_field_migration.rb:
class CreateSiteFields < ActiveRecord::Migration[5.0]
def change
create_table :site_fields do |t|
t.string :name, null: false
t.text :content, null: false
t.timestamps
end
# readonly names and default values of content managed fields
SiteField.create(name: "home_header_text", content: "Lorem ipsum sit dolor le amet.")
SiteField.create(name: "home_body_text", content: "Requisitor mon lormen doit namet.")
end
end
У меня есть администраторы, которые могут редактировать поля в моей панели администратора, которая уже защищена отдельно.
Чтобы выставить поля для внешнего интерфейса, я использую application_helper
, чтобы выставить переменную:
application_helper.rb:
def site_field(name)
SiteField.find_by(name: name).content.html_safe
end
А затем я ссылаюсь на статически именованные поля везде, где мне нужно в моих представлениях:
home.html.erb:
<%= site_field(:home_body_text) %>