2012-11-30 48 views
2

首先,我必須說我對Rails很新。我已經花了幾天的時間通過教程後的教程,仍然缺少一些概念。主要是因爲我只想從一個簡單的網站結構開始,但每個教程都是購物車或網站中的更多應用程序的博客。我在我的網站上有一些網頁,它們會有數據庫驅動的照片庫,但現在我只是試圖獲得這些問題的一些答案。瞭解軌道中的路由

網站結構:

首頁|照片|關於|工作|聯繫

工作具有例如子頁面:

HTML |紅寶石|鐵軌| BLA-BLA

  • 控制器

我需要建立一個控制器,每一個新的頁面或我能有一個控制器處理所有主要級別頁。 如果我可以用一個控制器如何將這項工作,我需要定義一個動作來處理每個頁面(view)像

class MainController < ApplicationController 
    def index 
    end 

    def photos 
    end 

    def contact 
    end 

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

我將如何路線以上。 請告訴我一個資源和*之間的差額得到

  • GET 「照片/照片」
  • 資源:照片

當我設置像一個特定頁面的控制器。 軌摹控制器聯繫接觸

它創建在我的意見被稱爲接觸和裏面的文件夾是一個叫做接觸意味着視圖我的網址聯繫人/聯繫方式 它還增加了一個途徑得到「聯繫人/聯繫方式」 現在,如果有什麼我只希望用戶輸入http://mydomain/contact,那麼這是行不通的。我如何設置它,以便用戶不必添加http://mydomain/contact/contact 我可以找到解決方法的唯一方法是使用匹配動詞。

match "contact" => 'contact#contact' 

這是否意味着我必須使用匹配我網站上的每個頁面來更改url路徑?

這些只是很多問題中的一小部分,我在大部分教程中都不太清楚。請不要告訴我使用用戶指南,因爲我已經和現在感到不知所措。我只是想從一些在rails中工作的開發人員那裏得到一些明確的答案,並且會設置一個像我上面概述的結構。

感謝

回答

1

你會得到一些互相矛盾的意見,我認爲,但在這裏就是我想要做的。

  • 創建一個MainController(我更喜歡HomeController,因爲它也會處理主頁,但這只是我)。該控制器將處理家庭,關於和聯繫的操作。

  • 創建一個PhotosController,因爲你說的照片來自數據庫,很有可能有索引/列表頁面和每張照片的單個頁面。

  • 創建一個處理工作主頁面和所有子頁面的WorksController。

現在..有些人會認爲(包括我自己)的那家,大約,接觸,和所有的工作頁面(子頁面太)應該由一個通用PagesController是足夠聰明,知道該怎麼處理做。儘管如此,我現在不會進入。

這兩條路線之間的區別:

get "photos/photos" 
resources :photos 

是第一個將只對GET請求「/照片/照片」創建路線。第二個將創建'/照片'的標準CRUD操作。

爲了您的靜態頁面,我可能會繼續前進,只是創建:

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

這是很難說的照片和工作,因爲我不知道你會做什麼。上面的內容並不儘可能幹,但除非你使用「智能頁面控制器」路由,否則它是最簡單的。

+0

謝謝菲利普這真的有幫助。我敢肯定有興趣知道如何設置一個可以處理所有頁面的PagesController。我也在想這樣的事情,但認爲這將不得不像上面在我的文章中所概述的那樣,爲每個視圖設置一個動作定義。這打破了目的,因爲我會重複代碼。所以在你的代碼中HomeController的工作就像我有MainController。我需要在HomeController中放置關於,聯繫人和索引的動作定義來處理每個單獨視圖的渲染 – Chapsterj

+0

如果about/contact/index只是直觀的視圖,沒有什麼奇怪的,你可以欺騙並在控制器中省略動作方法。但是,這樣做也意味着過濾器之前/之後的任何過濾器都不會被調用,所以包含它們是一個好主意。 –

+0

對於PagesController,使用:index操作方法創建該控制器,然後將其添加到路由文件的末尾(但是在默認路由之前,如果您仍然有):https://gist.github.com/ 4178245然後嘗試一下,因爲你打各種網址,看看你得到什麼,以及如何處理它。 –