2012-01-04 89 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