/ / Потребителски полета в Рафинерия CMS - ruby-on-rails, ruby, система за управление на съдържание

Персонализирани полета в CMS на Rafinery - рубинки на релси, рубин, система за управление на съдържанието, рафинерии

Как добавяте потребителски полета в CMS на рафинерия? Това означава, че бих искал да разширя основния модел на страницата, така че да включва няколко други неща, като снимки на екрани, име на издател, категория и различни други полета. Как го прилагате?

Отговори:

2 за отговор № 1

Разгледайте (отлично) Ръководство за начало на работа с рафинерия. В раздел 6 ръководството излага как да се добавят допълнителни полета - в примерите за двигатели с дата, картина и видеоклип:

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


7 за отговор № 2

За да се разшири базовият модел на рафинерията, генерирането на двигател не винаги е опция.

Разширих модела на страницата с поле за дата с

  • мигрирайте таблицата със страниците
  • маймуна кръпка на страницата модел
  • добавете (в действителност разшири) частично във формата

подробно:

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/ за изявлението изискване).

Сега създайте файла app / views / admin / pages / _form_fields_after_title.html.erb, който е заглушител, предоставен от рафинерия. Можете също да го създадете с

rake refinery:override view=admin/pages/_form_fields_after_title

тук дефинирах полето за формуляр (f е зададено с form_for обект от рафинерия)

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

След рестартиране на приложението, новото поле е активно.