2010-05-23 43 views
2

我正在尋找在我的腳手架中實現預覽功能。我需要做的就是允許用戶在新視圖(/ posts/new)中輸入信息,然後用預覽按鈕替換提交按鈕。在Rails中創建預覽功能的最佳方法

一旦預覽按鈕被點擊,用戶被路由到預覽頁面(可能/ posts/new/preview)。如果用戶想要進行更改,他們會點擊「返回」,或者如果他們對帖子滿意,他們可以提交帖子。

我發現這篇文章(http://eyedeal.team88.org/node/105),但它似乎過時了。任何關於最佳方法的想法是什麼?

非常感謝, 託尼

回答

0

您發佈的鏈接是一個辦法,但我更喜歡保存對象,並設置一個布爾標誌,假設公衆假(:默認=>假遷移定義)。 然後你基本上做的是實際創建帖子並重定向到顯示動作,你有 編輯按鈕(渲染編輯動作), 發佈按鈕(自定義動作設置公共標誌爲真) 和取消按鈕(實際上刪除該帖子) ,也許繼續以後的按鈕,這將保留帖子並重定向到任何其他頁面,以便用戶稍後可以回來並完成編輯。

當您需要顯示所有帖子時,定義一個named_scope:visible,:conditions => ['posts.public =?',true],並在索引和類似動作中調用Post.visible而不是Post.all。你也可以使用條件['posts.public =?',false]來定義一個default_scope,但要記住,如果你想查找不可見的帖子,你必須使用#without_scope。

這種方式比鏈接中的要好,因爲用戶總是可以稍後回來完成編輯帖子併發布它。但是,您將在數據庫中存儲更多對象,並且必須處理隱形帖子(默認情況下不顯示它們)。

+0

我沒有想過這個,這是一個好主意。但是,在這種特殊情況下,我希望能夠在保存到數據庫之前進行預覽,因爲用戶帳戶仍然是「如果」的想法。現在它看起來有點像craigslist,因爲你不需要註冊發佈。感謝您的洞察! – slythic 2010-05-23 14:48:16

3

從創建頁面提交時,在新操作中構建對象但不保存到數據庫。然後使用新操作中設置的標誌在其顯示視圖中呈現對象,以顯示提交按鈕。在你的顯示視圖中,總是有一個窗體,其中的對象的所有屬性都將被保存到數據庫的隱藏輸入字段或display:none's中。當標誌被設置時,你顯示提交按鈕。提交時,您將轉到將對象保存到數據庫的new_to_db操作。