Лучшие практики для предоставления контента в Rails управляемые поля? - PullRequest
0 голосов
/ 28 августа 2018

Чтобы уточнить, в первую очередь, мы не ищем CMS. У нас есть приложение, которое уже заполнено и работает.

Я хочу создать область на бэкэнде для зарегистрированных администраторов, чтобы управлять полями, которые появляются в интерфейсе веб-сайта.

Я думал о создании таблицы: CMS_Fields. Каждое поле CMS_Field может иметь поля :name, :content и :timestamp. Затем я бы отобразил это конкретное поле там, где я хочу, вызвав его в представлении по :name. Чтобы сделать это конкретное поле доступным для редактирования в бэкэнде, я бы создал отключенный ввод с полем :name внутри запрещенного ввода, и чтобы пользователь сам вводил содержимое: перед сохранением. Это также означает, что я должен инициализировать все поля с правильными значениями по умолчанию для :name. Имеет ли это смысл делать?

Чтобы использовать те поля в разных представлениях, которые не принадлежат CMSFieldController, я бы использовал вспомогательную переменную. Это нарушает соглашение и насколько хорошо?

Похоже ли это на правильный подход, или я должен рассмотреть другой способ ведения дел, или, может быть, даже драгоценный камень?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Я выполнил это, сначала создав модель для всех будущих управляемых полей 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) %>
0 голосов
/ 28 августа 2018

Посмотрите на администрирование https://github.com/thoughtbot/administrate

Я использовал это несколько раз, и это довольно здорово и гибко. Также ActiveAdmin был довольно хорошо https://github.com/activeadmin/activeadmin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...