Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 如何向Rails Spree Commerce应用程序添加额外的菜单项和视图_Ruby On Rails_Ruby_Git_Spree - Fatal编程技术网

Ruby on rails 如何向Rails Spree Commerce应用程序添加额外的菜单项和视图

Ruby on rails 如何向Rails Spree Commerce应用程序添加额外的菜单项和视图,ruby-on-rails,ruby,git,spree,Ruby On Rails,Ruby,Git,Spree,我有一个标准的RubyonRails应用程序,并设法用Capistrano部署它。现在我想在我的页面中添加一个额外的页面,该页面显示在左上角的菜单中,名为“About” 我还不太明白Rails是如何工作的。我的一个朋友告诉我,Rails基本上从git中获取了一切,如果你想做一些不同的事情,你必须进行覆盖或额外的页面 因此,编辑“主”布局页面(类似于ASP.NET的MVC4)不是添加菜单项的选项。除此之外,我需要一个控制器和视图 政府说我应该做以下几件事: Spree::Core::Engine.

我有一个标准的RubyonRails应用程序,并设法用Capistrano部署它。现在我想在我的页面中添加一个额外的页面,该页面显示在左上角的菜单中,名为“About”

我还不太明白Rails是如何工作的。我的一个朋友告诉我,Rails基本上从git中获取了一切,如果你想做一些不同的事情,你必须进行覆盖或额外的页面

因此,编辑“主”布局页面(类似于ASP.NET的MVC4)不是添加菜单项的选项。除此之外,我需要一个控制器和视图

政府说我应该做以下几件事:

Spree::Core::Engine.routes.draw do
  get "/about" => "about"
end
创建所需的控制器和视图目录:

mkdir -p app/controllers/spree
mkdir -p app/views/spree/about
接下来,在我们刚刚创建的目录中创建一个名为about_decorator.rb的新文件:

module Spree
  AboutController.class_eval do
    [Model parts I want to send to the view]

  end
end
我们还需要在config/routes.rb文件中为此操作添加路由。我们现在就开始吧。更新routes文件以包含以下内容:

Spree::Core::Engine.routes.draw do
  get "/about" => "about"
end
我想知道的是Rails是如何工作的(我朋友关于git和overrides的故事是真的吗?)

我希望有人能提供一些见解、链接和/或解释

Rails的工作原理 这将是对MVC的简单解释,以及框架的基本内部结构

MVC 模型-模型只是应用程序的数据。不需要数据库,但在rails世界中,模型通常连接一些数据库

视图-视图完全是用户看到的。视图中应该没有什么逻辑。只有被视为“视图逻辑”的内容。这是一个查看用户是否登录的简单检查,因此您应该显示他们的姓名或登录按钮。不过,有些人会争论将其放入视图助手中。无论如何,您都不应该在视图中进行计算。这就是模型的要点

控制器-控制器是指一个非常薄的层,它只获取请求所需的信息。本例中的请求是单页视图

rails开发人员有一个共同的思维过程,即“瘦控制器,胖模型”。这基本上说明控制器应该非常小。大多数应用程序逻辑应该包含在模型中,只在控制器中留下请求信息

注意:您的模型不应该了解您的视图,您的视图也不应该了解您的模型。也就是说,您的视图不应该直接使用您的模型

基本内部构件
config/routes.rb
-是一个描述应用程序中所有路由的文件。路线类似于
http://example.com/users/1
,最有可能指向用户配置文件。路由用于让应用程序知道每个请求使用哪些控制器、方法和名称

rake路由
-
rake
是ruby应用程序中非常常见的命令行工具。它允许您创建任务并执行它们。在本例中,
routes
任务解析整个
config/routes.rb
文件,并告诉您应用程序中有哪些路由可用,以及为每个路由指定的相应名称

局部视图-简单地说,局部视图只是视图的一部分。这是一种常见的做法,尤其是对于可以在单个应用程序的多个页面上使用的表单。使用分部的原因通常是为了消除视图中的重复。所有局部视图都以
\u
前缀命名。因此,它可能类似于
\u navigation.html.erb
\u form.html.haml
。(erb和haml是两种常见的HTML呈现引擎)

回答你的问题 将项目添加到导航栏 向导航栏添加项目与在ASP应用程序中编辑“母版页”非常相似。您只需要找到需要编辑的部分。在视图中,按照
”spree/shared/header“%>
声明进行操作,直到找到需要编辑的文件。注意,我不能肯定这是否是您需要遵循的实际文件,请查看
spree_application.html.erb
文件以查看您需要遵循的文件。该文件本质上与您习惯使用的“母版页”相同

能够实际使用新链接 您需要创建一个新的控制器,或者如果已经有一个控制器适合您尝试完成的任务,您可以在该控制器中创建一个新方法

如果需要操纵或显示某些数据,还需要一个模型。您可以创建一个,也可以只使用负责已有数据的任何数据

您需要在
routes.rb
文件中添加路由,以便应用程序知道要使用哪个
controller#方法

运行
rake routes
将为您提供有关刚刚添加的新路由的信息。注意,如果您有一个名为
user\u profile
的路由,则会为您提供方便的方法,使您能够轻松地链接到该路由。您可以使用
user\u profile\u path
user\u profile\u url
创建链接。我建议使用
*\u path
在您自己的站点上创建链接,因为它使用相对路径
/user/1
,而不是
http://example.com/user/1
<代码>*\u url
将给出后者。通常,如果您正在制作某种形式的API并希望创建回应用程序的链接,则仅使用
*\uURL

Rails的工作原理 这将是对MVC的简单解释,以及框架的基本内部结构

MVC 模型-模型只是应用程序的数据。没有数据库请求