2012-10-19 72 views
2

是什麼代碼redirect_to的@語法意義

redirect_to @user 

在控制器的方法使用時,意味着Rails的?

它到底在哪裏重定向?它是否重定向到用戶控制器(如果是這樣,控制器的哪種方法),還是不通過控制器,而是直接轉到視圖?

+3

在用戶控制器的顯示方法。 –

回答

4

基本上它查找一個關於你的資源路線是如何工作的呢

這樣想

send("#{@user.class.name.underscore.downcase}_path", @user)

一堆東西這可能不是確切的代碼,但它應該幫助你想象什麼實際上還在繼續。

控制器始終運行,在這種情況下,它將成爲用戶控制器的顯示操作,除非您有一些時髦的路由器選項。

rake routes解釋路線的佈局方式在這種情況下顯示的是

get /users/:id => users#show :as => "user_path"

從你進入模型替代是這樣的

從您的路線創建的正則表達式

:id是參數

會匹配inbound_object到路徑fu nction這是@user

:id is replaced with @user.id

2

redirect_to docs

將瀏覽器重定向至在選項中指定的目標。此參數可以採取三種形式:

... 

記錄 - 該網址將通過調用url_for與選擇,這將引用一個名爲URL該記錄生成。

而且從url_for docs

傳遞一個記錄(如一個活動記錄或Active資源),而不是一個哈希作爲選項參數將觸發該記錄的命名 路線。查找將發生在 類的名稱上。因此傳遞Workshop對象將嘗試使用workshop_path路由。如果您有嵌套路線,例如 admin_workshop_path,則必須明確調用它(url_for的 無法猜測該路線)。

2

這是在工作中寫

redirect_to user_path(@user) 

更多Rails的魔法在這裏,是好還是壞的等價物。

1

它要求用戶的這樣

redirect_to user_path(@user) 

重要的一點顯示功能:如果我們看到的路線則:ID傳遞,但這裏對象獲得通過

當中去轉換成的ID通過

用戶DEF to_param self.id 端

其可我Ñ模型,我們可以它覆蓋到

所以基本上以轉換髮生第一

redirect_to @user => redirect_to user_path(@user) 

然後

@user => @user.id