2012-11-27 40 views
1

我有一個複雜的模型,並且想要創建不同的屏幕來編輯它。作爲一個愚蠢的例子,說它是一個用戶模型,一個屏幕讓你編輯名稱,另一個屏幕編輯電話號碼,另一個頁面編輯用戶的偏好。多個視圖編輯相同的Rails資源

很容易爲每個視圖,路線等創建新的動作,表單,但訣竅是當您實際上點擊提交時,它會調用update,然後......什麼?如果有錯誤,應該返回到用於編輯模型的頁面,而不是通用的「編輯」視圖。即使成功,回到更新被調用的頁面也不錯。

對會話進行黑客攻擊並不難,但我總是想知道「有更好的方法嗎?」。

回答

1

我找不到這樣做比這更好的辦法,而要做到這在匆忙需要:

def edit 
    flash[:edit_user_return_to] = :edit 
... 

def other_edit 
    flash[:edit_user_return_to] = :other_edit 
... 

其次

render(:action => flash[:edit_user_return_to] || :edit) 
0

您可以使用http referrer和URI解析功能來執行此操作。類似於

redirect_to(URI.parse(request.env['HTTP_REFERER'][5])) 

此行從請求獲取HTTP REFERER,並使用URI模塊解析它。引用路徑應該是數組中的第6個元素。

+1

'redirect_to的URI(request.referrer)。路徑「應該是上述代碼行的更好的方法.. –

+0

我想明確地設置在會話中呈現的動作有點清潔/更直接,也不涉及重定向。 –

相關問題