2

我目前正在學習Ruby的過程。我有一些Java EE知識。根據我的說法(據我所知)Ruby on Rails假定每個請求都會完成整個頁面刷新(渲染)(如果我們不涉及backbone或remote => true)。在整個頁面刷新設計的軌道上是紅寶石

所以問題是我們如何保持用戶會話的狀態? (不包括cookie或數據庫持久性)

在Java中有一個backingBean的概念,它預示(直到會話存在)應用程序中不同UI部分的狀態。

對於例如:假設有不同的UI部分

  • 第一部分包含用戶信息(姓名,年齡)的應用程序。
  • 第二部分包含他的TODO列表。
  • 第三部分包含他的便籤簿。
  • 第四部分包含說一個輸入字段。

現在讓我們說用戶在輸入字段中輸入一些文本,然後按Enter鍵。 現在軌道創建控制器(A)的對象(oA)並調用該對象的特定方法(oA.m)。

從這裏控制進入視圖,控制器對象(oA)可用於視圖中的(嵌入)ruby代碼。 現在我們使用這個oA對象來填充視圖中的動態數據。 假設這個視圖在一個佈局中呈現,其中包含渲染其他3個應用程序的代碼。

現在爲了成功運行代碼,oA對象還應該具有佈局視圖所需的動態內容。

如果我能夠正確地解釋它和上面的情況是有意義的,你再下面是具體的問題: 你不覺得,隨着應用增加部分每個控制器爲完整的應用程序提供數據。 (反對不要重複自己!!)

在哪裏好像我們有對應於每個UI部分的支持對象,那麼我們只能在該特定視圖的控制器中工作。

我知道我錯過了一些模式,或者可能正在尋找錯誤的方式。 任何人都可以請回應我在做什麼/想/用錯的方式。

+1

退房https://github.com/schneems/wicked換一種方式做嚮導(多步驟形式)在Rails中。 –

+1

你之前做過任何網頁開發嗎?我不想成爲一個意義重大的吝嗇鬼,但是聽起來好像你會更好地得到一本好的介紹性書籍,而不是問這樣的具體問題,這可能不會給你實際需要的背景環境,作品。大多數網絡開發書籍的前幾章將幫助您定位思路。對不起,如果這聽起來很刺耳,這是對你問題的反思,而不是你! – Matt

+0

感謝您同時保持禮貌和直率...... 但我在示例 – Bhuvan

回答

2

問頁面刷新是在瀏覽器的領域,而你的問題的其餘部分更傾向於服務器端的問題。所以,我試圖解決服務器端問題。

Ruby-on-Rails框架設計的背景是:CRUD它改進了在數據庫中通過網絡選擇,插入,更新和刪除數據的方式。

通過網絡意味着您使用HTTP,並且在服務器端修改數據的主要方式是處理POST和PUT請求。只要你想提供超過1個動作/頁面,你可能需要使用Ajax,你可能會離開Rails方式。對於您想要結合待辦事項列表,個人檔案管理器,便籤本的用例...如果沒有完整的頁面刷新,你最好去研究一下客戶端JavaScript框架(Angular,Ember,Backbone是Rails社區中流行的框架)。

您也可能希望做一些背景閱讀,其中Ruby-on-Rails中的觀點來自例如, Why Rails is different from Java,你會發現:

  • 的Ruby-on-Rails的1/3將提供很好的方法來處理HTTP(=路由和控制器)
  • 的Rails的1/3,提供了更好的互動數據庫(=的ActiveRecord)
  • 的Rails的1/3是更好的信息再現/呈現(= ActionViews)
+0

之前還問了一個通用問題這是解釋性的......只是爲了讓我的理解更加清晰......如果我們限制我們自己有完整的頁面刷新和不使用ajax然後唯一的出路是使控制器的層次結構..好嗎? – Bhuvan

+0

在Rails中,您通常不使用控制器的層次結構,而是可以映射到數據的資源/表示形式的一個控制器。在你的例子中,你將有一個ScratchpadsController,ProfilesController,TodosController;然後每個控制器都可以通過路由文件中的路由尋址(=將URL映射到控制器)。您最終修改/顯示1資源/頁面 – poseid

+0

因此,如果我們**「通常不使用控制器的層次結構」**,那麼在軌道中遵循的設計模式最終會修改/顯示多於一個資源/全頁面刷新頁面? – Bhuvan