覆盖基本Rails代码

时间:2012-01-04 22:31:58

标签: ruby-on-rails rails-engines

我管理了一些Rails站点,这些站点具有非常相似的源代码,但存在一些小差异(大多数但并非所有差异都存在于数据库中)。我希望每个站点都有相同的基本源代码,以及驻留在覆盖基本源代码的自定义文件中的任何源代码差异。例如,如果一个站点进行了摄影比赛,那么该站点将具有其他站点不具有的特殊视图文件,但是所有站点都具有相同的默认视图文件(仅覆盖具有比赛的文件)。这是Rails引擎的任务吗?如果没有(或者如果有更好的方法),你会怎么做呢?

感谢。

编辑:这是另一个例子 - 一个网站(我管理的三个网站中)需要在某个页面上有特殊文字。我希望所有三个网站上的此页面的视图保持不变,我不希望视图中的条件代码确定是否显示此文本。相反,我更喜欢为变体网站提供一个单独的视图来覆盖默认视图(通过这种方式更容易管理网站之间的差异)。

1 个答案:

答案 0 :(得分:0)

您问题的直接答案(见下文)。对您的问题的解释时间越长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
相关问题