Переопределение базового кода Rails - PullRequest
0 голосов
/ 05 января 2012

Я управляю несколькими сайтами Rails, которые имеют очень похожий исходный код с небольшими отличиями (большинство, но не все различия находятся в базе данных).Я хотел бы, чтобы каждый сайт имел идентичный базовый исходный код с любыми различиями исходного кода, находящимися в пользовательских файлах, которые переопределяют базовый исходный код.Например, если бы на одном сайте проводился фотоконкурс, на этом сайте был бы специальный файл просмотра, которого не было бы на других сайтах, но все они имели бы один и тот же файл просмотра по умолчанию (только тот, который участвовал в конкурсе, будет переопределен).Будет ли это задачей для Rails Engines?Если нет (или если есть лучший способ), как бы вы поступили так?

Спасибо.

Редактировать: Вот еще один пример - один сайт (из трех, которыми я управляю) должен иметь специальный текст на определенной странице.Я хочу, чтобы представление для этой страницы на всех трех сайтах оставалось одинаковым, и я НЕ хочу, чтобы в представлении был условный код, определяющий, показывать ли этот текст или нет.Скорее, я бы предпочел иметь отдельное представление для варианта сайта, которое переопределяет представление по умолчанию (НАМНОГО проще управлять различиями между сайтами таким образом).

1 Ответ

0 голосов
/ 26 августа 2012

Немедленный ответ на ваш вопрос (см. Ниже). Более длинное объяснение вашего вопроса: http://edgeguides.rubyonrails.org/engines.html#overriding-views. Дайте мне знать, если у вас остались вопросы (двигатели - мое хобби).

app1
|- app/views/photo_contests
|                      |- index.html.erb  # => custom view template #1
|
\- Gemfile (gem 'common_engine')

app2
|- app/views/photo_contests
|                      |- index.html.erb  # => custom view template #2
|
\- Gemfile (gem 'common_engine')


common_engine
|
|- app/controllers/PhotoContentsControllers.rb
|                      |- index
|                      |- show
|                      |- vote
|
|- app/models/photo_contest.rb
|
|- app/views/photo_contents
|                      |-  index.html.erb
|                      |-  show.html.erb
|                      |-  vote.html.erb
|- config/routes.rb
|- lib/common_engine/engine.rb
|- lib/common_engine.rb
\- common_engine.gemspec
...