2011-06-03 62 views
3

我正在閱讀Obie Fernandez的「The Rails 3 Way」,並且有一點我不確定自己理解正確。我是新來的鐵軌,並希望確保我理解正確。我有一些香草紅寶石的經驗。不多,但有些。幫助者的隱式創建 - routes.rb和'match'語句

討論的文字如下:(關於路由和配置/ routes.rb中文件)

」 ......

通過創建像

match 'auctions/:id' => "auction#show", :as => 'auction' 

你獲得的路由在如下情況下使用漂亮的幫手方法的能力:

link_to item.description, auction_path(item.auction) 

...「

我的問題是,具體是什麼部分match 'auctions/:id' => "auction#show", :as => 'auction'創建幫助函數? (如link_to auctionauction_path())是否是:as => 'auction'的一部分?是否會創建任何助手而不追加:as => 'auction'

我的困惑源於其他指南,我已經看到這裏被省略,但傭工似乎無論如何創建。在rails.rb文件中使用match語句創建助手的具體方法是什麼?如果它不是:as => 'auction'部分,那麼將其附加到match聲明的具體目的是什麼?

我知道這看起來像一個超級基本問題,但是這個細節似乎在我迄今閱讀過的文章中被掩蓋了。在此先感謝您提供的任何信息。

回答

1

是的,它是:as => 'named_route'部分創建命名的路線(反過來創建助手)。至於離開它,你是指在routes.rbresources :something的情況? resources方法根據資源的名稱自動生成一組URL助手。

+0

謝謝你的回答。我指的是我在github上閱讀過的其他人的代碼,試圖熟悉rails如何工作,以及我自己對rails的瞭解。 (我有大約一週的Rails使用經驗,還有大約6個月的使用紅寶石的經驗。)我開始感覺到,如果不知道任何紅寶石,我會變得更好。這對我到目前爲止遇到的幫助者遇到的問題提供了很多幫助。如果我有更多的聲望,我會提出你的答案。再次感謝! – Joshua 2011-06-03 04:53:25

+0

有一個知識的門檻(至少對我來說)Rails停止如此「神奇」並開始有意義。 Rails代碼可能有點壓倒性,但閱讀它是瞭解事情工作方式的好方法。我認爲在開始學習Rails之前,最好先了解Ruby。 – 2011-06-03 05:05:34

2

我只是嘗試這樣做:

match "alfa/beta", to: 'users#new' 

在這種情況下,即使沒有:as => 'named_route',我得到了自由以下幫手

alfa_beta_path 

,正如預期,指向users#new。 因此,如果沒有:as規範,那麼通過解析路由的字符串,似乎助手也會自動生成。