2012-01-04 90 views
0

我管理几个具有非常类似源代码的Rails站点,但有一些小的差异(大多数但不是所有差异都驻留在数据库中)。我希望每个站点都具有与覆盖基本源代码的自定义文件中存在的任何源代码差异相同的基本源代码。例如,如果一个网站有一个照片比赛正在进行,该网站将有一个特殊的视图文件,其他网站不会有,但所有都会有相同的默认视图文件(只有与比赛的文件将被覆盖)。这将成为Rails引擎的一项任务吗?如果没有(或者如果有更好的方法),你会如何去做这件事?覆盖基础Rails代码

谢谢。

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

+0

请提供一个更加可靠的例子。 – 2012-01-04 22:42:33

+0

增加了一个新的例子。 – modulaaron 2012-01-04 22:56:03

回答

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 
+0

您的回复非常有意义 - 谢谢! – modulaaron 2013-01-18 21:20:55