2015-03-13 47 views
0

我目前正在使用ROR應用程序。問題是該應用程序並沒有在創建時考慮到很多定製。覆蓋開源Rails應用程序視圖,無需編輯原始視圖

注:這是一個ROR APP,並不是發動機

我想:

  • 過乘坐當前觀點
  • 避免編輯的意見應用源代碼
  • 將模板語言從.slim(它當前是)更改爲.erb

我嘗試將應用程序轉換爲引擎,安裝它,然後創建視圖。這將超過應用程序中的那些。

雖然這不起作用,並且需要很長時間才能使「引擎」準備就緒。

回答

1

實際上,最好的方法是使用應用程序作爲引擎。這是多麼困難,取決於當前的應用程序。但是,我個人看不到直接修改視圖源代碼或複製整個視圖代碼並在另一個地方修改它的差異。一般來說,視圖不會相互「繼承」,因此您必須複製粘貼並編輯與應用程序源代碼中相同的代碼。順便說一下,如果你想輕鬆地使它成爲引擎就緒,你可以嘗試只提取視圖文件夾(如果需要,助手,資產),並把它放在引擎中,並留下所有的東西(控制器,模塊,路線等)在你的主應用程序。然後,在主應用程序中,您可以使用各自的路徑創建視圖,從引擎複製其內容並僅修改它們。

但是爲了這樣或類似的目的,在Spree中使用了一個寶石Deface,以便擴展一起交互。這個寶石點,原始視圖沒有修改,你創建deface覆蓋文件,使用Nokogiri(css,xpath)語法,在運行時更改實際視圖內容。

+0

感謝您的提示。雖然這並不理想,但我只是花了很短時間纔將視圖提取到引擎中,然後在應用程序中覆蓋它。我將嚮應用程序提交PR。 – ismail 2015-03-13 13:15:29

0

在控制器中,您可以使用命令render "name_of_custom_view"覆蓋操作的默認視圖。 (http://guides.rubyonrails.org/layouts_and_rendering.html#using-render

是否支持開箱即用的模板語言?嘗試命名您的自定義視圖* .html.erb而不是* .html.slim。

+0

是的,erb是默認值。 – 2015-03-13 10:56:09

+0

我要編輯這個問題,因爲禁用苗條是另一個問題。 – ismail 2015-03-13 13:16:17