我發現很難直觀地看到類在軌中做什麼,而且我不完全理解視圖如何呈現。在軌中可視化控制器程序流
這是我正在看的代碼示例(它是創建一個簡單的用戶登錄)。
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to(root_url, {notice: "Congratulations on signing up"})
else
render "new"
end
end
def user_params
params.require(:user).permit(:email, :password)
end
end
請你指出的方式,我概念化這個任何不準確之處:
打字根網址到地址欄:
發送GET請求發送到網絡服務器到根目錄,服務器查找根目錄,看到
root '/users#new'
。服務器創建一個UsersController類的實例,並在該實例上調用「new」方法。
此方法創建User類的一個實例並將其存儲爲UsersController實例的實例變量。 不知何故 ??這會導致顯示users/new.html.erb頁面,這是一種形式。
您填寫表單並提交您回覆到服務器(使用信息)。
這會自動獲取用戶#create動作,並使用存儲在params散列中的變量運行該位代碼。
UsersController的實例與它的模型實例一起被丟棄,但是params哈希會一直保留到它被覆蓋?
這是正確的嗎?
如何呈現視圖?
和另一個稍微偏離主題的問題。是發佈和獲得變量存儲在params哈希?
謝謝。還有一個問題。很多時候你訪問params散列 - 即params [:id]。這些散列可以通過獲取和發佈http請求來創建,Ruby是否不區分它們? –
從一般的面向對象ruby的角度來看,想象對象的一切正是你想要做的事情。如果沒有OO可視化,這個特定的問題可能會更容易概念化,但是不要將所有事情都想象成一個開始(實例化)。 – toolz
@ZachSmith我相信每個HTTP方法都可以通過協議和[w3規範](http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html) – toolz