#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 руководство описывает, как добавить дополнительные поля — в примере даты, изображения и рекламного объявления — с использованием движков: