Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 主题是狂欢装置;制造了一场污损噩梦_Ruby On Rails_Ruby_Styling_Spree_Deface - Fatal编程技术网

Ruby on rails 主题是狂欢装置;制造了一场污损噩梦

Ruby on rails 主题是狂欢装置;制造了一场污损噩梦,ruby-on-rails,ruby,styling,spree,deface,Ruby On Rails,Ruby,Styling,Spree,Deface,首先在Programmers.SE上输入这个,但是想象一下这可能更适合这里——纯粹是因为它不需要关于特定技术问题的建议。尽管如此,请随意投票决定行动 我目前正在使用RubyonRails的“Spree”电子商务平台进行一个项目。配置和使用它是一种完全的乐趣。然而,欢乐就此止步 我正在尝试开发一个完全定制的界面——一个与默认配置毫无相似之处的界面。现在,Spree文档表明我只有两个选择: 使用deface覆盖。到处都是。似乎要覆盖其他覆盖 完全重建视图 当然,对于这种风格的戏剧性变化,使用污损是一

首先在Programmers.SE上输入这个,但是想象一下这可能更适合这里——纯粹是因为它不需要关于特定技术问题的建议。尽管如此,请随意投票决定行动

我目前正在使用RubyonRails的“Spree”电子商务平台进行一个项目。配置和使用它是一种完全的乐趣。然而,欢乐就此止步

我正在尝试开发一个完全定制的界面——一个与默认配置毫无相似之处的界面。现在,Spree文档表明我只有两个选择:

  • 使用
    deface
    覆盖。到处都是。似乎要覆盖其他覆盖
  • 完全重建视图
  • 当然,对于这种风格的戏剧性变化,使用污损是一场彻头彻尾的噩梦
    Deface
    看起来不像是一种可以接受的方式来重新编写一个完整的UI;它似乎也不是很有效。所以我选择完全重建视图

    然后意识到大约有8个插件都依赖于破坏覆盖,视图文件硬编码,目标选择器通常是“片状”(充其量)

    除了spree网站上非常少的幻灯片外,我所能找到的都是各种会议的幻灯片,如果不考虑演讲的内容,这些幻灯片实际上用处很小。他们似乎都把重点放在使用污损覆盖来进行基本上过于简单的更改上,而最近的更改似乎已经有一年多的历史了


    我错过了什么吗?有人知道这样做的最佳实践吗?我应该在哪里寻找呢?

    我也遇到了同样的问题,正如您所建议的,当有很多插件使用deface时,最好使用deface,而不是覆盖整个视图。 花了一段时间才了解到,除了文档之外,spree的麦加和指南是spree的最佳选择。文档中缺少的任何内容都显示在此处

    如果要替代视图,有两种方法:

    1) 您希望使用新视图完全覆盖它。在这种情况下,我建议不要更改当前源代码中使用的现有结构,而是添加新的更改。通过这种方式,您仍然可以根据deface将数据挂钩提供给其他插件,deface取决于视图的html代码结构和标记

    2) 使用污损。如果没有足够的文档,那么开始诽谤有点像噩梦。开始使用Deface的最佳方法是。 在Deface被替换后测试新视图代码的最重要的实用程序是使用rake任务。 要查看使用标记选择的图元,请使用:
    rake deface:test_选择器['spree/address/_form','p']
    -这显示了在相应的局部视图中使用p的所有元素。 要查看原始部分使用,请执行以下操作:

    rake deface:get_result[shared/_head]
    
    deface的github上提到了这些,但它们非常方便,因此强调。

    从Spree用户的邮件列表中,普遍的共识似乎是:

    最好的选择是取消所有视图覆盖的损坏-这 最好通过分叉spree前端来实现

    关于插件,事情并不简单——如果不是的话 如果可以保留数据挂钩,那么我只需要禁用覆盖 并直接在视图中实现它们

    不太好,但两害相权取其轻。通过对这样一个戏剧性的变化使用诽谤,你会发现自己处于一个混乱的覆盖

    讨论还包括一位开发人员提到的(非常好的主意)在这样做之后使用水豚进行测试,以确保一切仍然正常工作。每次更新后都会涉及到维护,这正是@Lavixu的回答试图避免的——在理想的世界中,他会被当场发现,而deface可以用于此

    对于不太剧烈的变化,我建议每次都使用deface,Lavixu提到了一个关于测试deface覆盖的非常好的技巧


    不幸的是,事情并没有那么简单。如果你发现自己处于这种情况,那么阅读上面的讨论可能是值得的,它非常有帮助。

    污损是一场巨大的灾难。整个概念是一个巨大的反模式,它导致了一个完整的、彻底的、不可质疑的噩梦。我真的希望Spree社区远离它,尤其是插件,并为应用程序内部的视图级定制提供更好的选项

    Spree中不使用Deface的最大缺点是,您的自定义代码与Spree“stock”视图代码不同,升级Spree时,您有两个不同的版本(您的自定义版本和Spree默认版本)用于协调Spree的每次升级。你必须一个文件一个文件地做

    这很枯燥,但我通过在我创建的每个视图中插入注释“开始自定义代码”和“结束自定义代码”,使我自己的工作更轻松一些,这些视图中混合了spree默认代码和我自己的代码。这使得升级过程更加顺利,但仍然没有简单的答案


    如果Winston Churchill是Rails开发人员,他会说“在Spree中,视图覆盖是最糟糕的定制形式,除了所有其他形式。”

    我已经在官方邮件列表上发布了一个查询,如果我在那里运气好的话,我会做出回应。:)谢谢你。问题主要在于预期的设计更改有多大,钩子将不再保留在同一个文件中。这些钩子在deface期望的地方不可用,破坏了内部和插件功能。邮件列表上说,可能会覆盖所有视图,或者分叉spree前端gem。这仍然会给每个插件以及它们期望挂钩的位置留下问题。:/我已经给了你一个+1作为它最重要的建议,
    deface:get_result[]
    技巧非常巧妙