覆盖开源Rails APP视图,无需编辑原始视图

时间:2015-03-13 09:54:17

标签: ruby-on-rails ruby-on-rails-4 rails-engines

我目前正在使用ROR App。问题是应用程序创建时没有考虑太多自定义。

注意:这是ROR APP 不是引擎

我想:

  • 覆盖当前观点
  • 避免在应用源代码中编辑视图
  • 将模板语言从.slim(目前为止)更改为.erb

我尝试将应用转换为引擎,安装它然后创建视图。哪个会覆盖应用程序中的那些。

虽然这不起作用,并且需要花费大量时间才能使它成为引擎'准备。

2 个答案:

答案 0 :(得分:1)

事实上,最好的方法是使用app作为引擎。它有多难,取决于当前的应用程序。但我个人不能直接看到修改视图源代码之间的差异,或者复制整个视图代码并在其他地方修改它。一般而言,观点并非继承"彼此之间,因此您必须复制粘贴并编辑与应用源代码中相同的代码。

顺便说一句,如果你想轻松地使它成为引擎就绪,你可以尝试只提取视图文件夹(如果需要的话,帮助者,资产)并将其放入引擎并留下所有东西(控制器,模块) ,主要应用程序中的路线等)。然后,在主应用程序中,您可以创建具有相应路径的视图,从引擎复制其内容并仅修改它们。

但是出于这样或类似的目的,在Deface中使用了一个gem Spree,以便扩展可以轻松地进行交互。关键是这个gem,原始视图没有被修改,你创建deface覆盖文件,使用Nokogiri(css,xpath)语法,在运行时更改实际视图内容。

答案 1 :(得分:0)

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

开箱即用的.erb模板语言是不是支持?尝试命名自定义视图* .html.erb而不是* .html.slim。