Пользовательские поля в Refinery CMS

#ruby-on-rails #ruby #content-management-system #refinerycms

#ruby-on-rails #ruby #система управления контентом #refinerycms

Вопрос:

Как добавить пользовательские поля в Refinery CMS? То есть я хотел бы расширить базовую модель страницы, включив в нее кучу других элементов, таких как скриншоты, название издателя, категория и множество других полей. Как вы это реализуете?

Ответ №1:

Для расширения базовой модели refinery не всегда возможно создать движок.

Я расширил модель страницы полем даты с помощью

  • перенесите таблицу pages
  • monkey исправляет модель страницы
  • добавьте (фактически разверните) частичное поле в форме

подробно:

 rails g migration AddDateToPage event_date:date
rake db:migrate
  

добавьте app/models /page.rb с

 require Refinery::Pages::Engine.config.root   'app'   'models'   'page'
class Page
  attr_accessible :event_date
end
  

это расширяет модель страницы, так что мое пользовательское поле устанавливается путем массового присвоения (благодаря http://railsrx.com/2011/04/15/overriding-refinery-extending-globalize-and-pow / для инструкции require).

Теперь создайте файл app/views/admin/pages/_form_fields_after_title.html.erb, который является заглушкой, предоставленной refinery. Вы также можете создать его с

 rake refinery:override view=admin/pages/_form_fields_after_title
  

здесь я определил поле формы (f задается с помощью объекта form_for в refinery)

 <div class="field">
  <%= f.label :event_date, t('admin.pages.event_date') %>
  <%= f.text_field :event_date %>
</div>
  

После перезапуска приложения новое поле становится активным.

Ответ №2:

Взгляните на (отлично) Начало работы с руководством по переработке. В разделе 6 руководство описывает, как добавить дополнительные поля — в примере даты, изображения и рекламного объявления — с использованием движков:

http://refinerycms.com/guides/getting-started-with-refinery#extending-refinery-with-your-first-engine