1

我正在尝试将 Spree 与我的 RoR 应用程序一起使用。好的,当我想定制一些东西时,我确实会遵循官方网站上的所有这些指南和常见问题解答。没关系,没有问题。一个问题,我找不到线索——这怎么可能,在应用程序/视图、应用程序/模型文件夹中没有任何内容,但它仍然有效?我的意思是,是的,我可以在这些文件夹中创建一些东西并重新定义我的视图的行为(实际上,这是自定义的方式之一),但我真的很想了解内部结构。我对 Rails 很陌生,习惯了经典的app文件夹结构。

4

1 回答 1

3

您想知道的是 Rails 引擎的魔力。

Ruby on Rails 允许您定义引擎(您的应用程序也是其中之一),当它查找视图/控制器/等时,所有已安装的引擎都是搜索路径的一部分。

因此,该视图位于 Spree 宝石内部,您看不到 - 但它仍然看起来在那里。如果您在视图文件夹中放置同名的内容,它将优先于您在 Gem 中的 Rails 引擎中的视图。

这是关于引擎如何在 Rails 中工作的一个很好的指南:

http://edgeguides.rubyonrails.org/engines.html

这些引擎的一个很好的例子是您可能在应用程序中使用的 jQuery-rails Gem。它根本没有代码(除了一些没有资产管道的 Rails 3.0 及以下版本的后备),而是 app/assets/javascripts 文件夹中的 jQuery.js 文件。而且由于引擎位于加载路径中,您可以要求其中的资产。引擎本身具有与您的应用程序相同的文件夹结构(app/viewsapp/controllers...)

您可以在这里查看 Spree 的内部结构:https ://github.com/spree/spree/tree/master/core/app

于 2013-01-31T19:54:28.117 回答