2

好的,首先我不得不说我对 Rails 很陌生。在过去的几天里,我一直在学习一个又一个教程,但仍然缺少一些概念。主要是因为我只想从一个简单的站点结构开始,但每个教程要么是购物车,要么是博客,它们是站点内的更多应用程序。我的网站上有一些页面将包含数据库驱动的照片库,但现在我只是想获得这些问题的一些答案。

网站结构:

主页 | 照片 | 关于 | 工作 | 接触

作品有子页面,例如:

html | 红宝石 | 导轨 | 废话

  • 控制器

我是否需要为每个新页面设置一个控制器,或者我是否可以有一个控制器来处理所有主级别页面。如果我可以使用一个控制器,那将如何工作,我是否需要定义一个操作来处​​理每个页面(视图),例如

class MainController < ApplicationController
  def index
  end

  def photos
  end

  def contact
  end

  # and so on ......
end
  • 路由:

我将如何路由上述内容。资源和 *get有什么区别

  • 获取“照片/照片”
  • 资源:照片

当我为特定页面设置控制器时。rails g controller 联系方式

它在我的视图中创建了一个名为contact的文件夹,在其中创建了一个名为contact的视图,这意味着我的url是contact/contact,它还添加了一个路由get“contact/contact”现在如果我只想让用户输入http://mydomain/contact那么这不会发生去工作。我将如何设置它以便用户不必添加http://mydomain/contact/contact 我能找到解决此问题的唯一方法是使用匹配动词。

match "contact" => 'contact#contact'

这是否意味着我必须对我网站上的每个页面使用匹配来更改 url 路径?

这些只是我所遇到的许多问题中的一小部分,这些问题在我阅读过的大多数教程中都不是很清楚。请不要告诉我使用用户指南,因为我已经并且现在不知所措。我只是想从一些在 Rails 中工作的开发人员那里得到一些明确的答案,并且会像我上面概述的那样建立一个结构。

谢谢

4

1 回答 1

1

我想你会得到一些相互矛盾的建议,但这就是我要做的。

  • 创建一个 MainController(我更喜欢 HomeController,因为它也可以处理主页,但这只是我)。这个控制器将处理 home、about 和 contact 的动作。

  • 创建一个 PhotosController 因为您说照片来自数据库,并且很有可能每张照片都有一个索引/列表页面和单独的页面。

  • 创建一个处理工作主页和所有子页面的 WorksController。

现在.. 一些人会争论(包括我自己)home、about、contact 和所有的工作页面(子页面也是)应该由一个通用的 PagesController 处理,它足够聪明,知道该做什么。不过我现在不打算谈了。

这两条路线的区别:

get "photos/photos"
resources :photos

是不是第一个只会为“/photos/photos”的 GET 请求创建单个路由。第二个将为“/photos”创建标准的 CRUD 操作。

对于您的静态页面,我可能会继续创建:

match "about" => 'main#about'
match "contact" => 'main#contact'
...

很难说照片和工作,因为我不知道你会在那里做什么。上面的内容并不像它可能的那样 DRY,但除非你走“智能页面控制器”路线,否则它是最简单的。

于 2012-11-30T19:55:30.707 回答