2013-07-31 27 views
0

我不理解以下應用程序中sessionparams之間的差異。表單數據是通過session還是params傳遞的?

用戶提交新的電影表單。相關的控制器將如何訪問電影的標題?

  1. session['title']
  2. session.title
  3. params['title']
  4. params.title
  5. 上述所有

基礎上StackOverflow的答案在Difference between session and params in Controller class

params生活在網址或表單的帖子正文中,所以只要查詢完成就會消失。

會話在多個請求之間持續存在(信息通常存儲在cookie中,但這取決於您的配置)。

要短:

  • PARAMS:只有一個請求(創建一個對象,訪問一個特定頁面)
  • 會議:信息被持久化(車,登錄的用戶。)

我對測驗選擇(1)session ['title']和得到的答案是錯誤的。我選擇(1)是因爲我認爲它涉及訪問必須堅持的信息。

我誤解了這個問題,也許這是更多的「一個請求只」,所以答案應該是(3)params['title']

+0

發佈你的參數 –

+0

我沒有得到關於測驗的任何其他信息。有沒有其他信息可以做這個問題? – user86408

回答

4

要嘗試回答你的問題在這一測驗中,而不只是在代碼的上下文的背景下,考慮它說:

PARAMS住在URL或表單的帖子正文,因此只要查詢完成,它就會消失 。

現在考慮這個問題本身說:

用戶提交一個新的電影形式。相關控制器 將如何訪問電影的標題?

所以問題是說用戶通過填寫​​表單然後post編輯到服務器進行交互。這正是您的筆記中提到的「表單的後主體」

所以正確的答案是3)params['title']

現在,一旦訪問了這些數據,它就可以放入會話中,但是這對於開發人員來說是做或決定的,這並不在這裏所討論的範圍之內。

你也知道,在這個問題的背景下,會話不是什麼用的,因爲你的問題只涉及單個請求:發送表單。如果您的問題涉及從表單發送的數據必須持續多個請求(例如多頁表單),那麼會話可能會發揮作用。

0

訪問數據之前,你需要把它。在默認的rails生成窗體中,所有數據都以params的方式發送一個請求。如果您的表單指向User#create action並且有'name'輸入,則您將在User#create action中包含params ['name']。

會話是另一回事。在standart生成的rails腳手架中很難找到會話。您可以將會話作爲散列進行訪問。 session ['name']將在請求之間存儲名稱。 Read more

因此,params是爲一個請求生成的 - 將數據從用戶傳輸到服務器,會話不是用於傳輸數據,而是用於存儲它。

相關問題