我有一個複雜的模型,並且想要創建不同的屏幕來編輯它。作爲一個愚蠢的例子,說它是一個用戶模型,一個屏幕讓你編輯名稱,另一個屏幕編輯電話號碼,另一個頁面編輯用戶的偏好。多個視圖編輯相同的Rails資源
很容易爲每個視圖,路線等創建新的動作,表單,但訣竅是當您實際上點擊提交時,它會調用update
,然後......什麼?如果有錯誤,應該返回到用於編輯模型的頁面,而不是通用的「編輯」視圖。即使成功,回到更新被調用的頁面也不錯。
對會話進行黑客攻擊並不難,但我總是想知道「有更好的方法嗎?」。
我有一個複雜的模型,並且想要創建不同的屏幕來編輯它。作爲一個愚蠢的例子,說它是一個用戶模型,一個屏幕讓你編輯名稱,另一個屏幕編輯電話號碼,另一個頁面編輯用戶的偏好。多個視圖編輯相同的Rails資源
很容易爲每個視圖,路線等創建新的動作,表單,但訣竅是當您實際上點擊提交時,它會調用update
,然後......什麼?如果有錯誤,應該返回到用於編輯模型的頁面,而不是通用的「編輯」視圖。即使成功,回到更新被調用的頁面也不錯。
對會話進行黑客攻擊並不難,但我總是想知道「有更好的方法嗎?」。
我找不到這樣做比這更好的辦法,而要做到這在匆忙需要:
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)
您可以使用http referrer和URI解析功能來執行此操作。類似於
redirect_to(URI.parse(request.env['HTTP_REFERER'][5]))
此行從請求獲取HTTP REFERER,並使用URI模塊解析它。引用路徑應該是數組中的第6個元素。
'redirect_to的URI(request.referrer)。路徑「應該是上述代碼行的更好的方法.. –
我想明確地設置在會話中呈現的動作有點清潔/更直接,也不涉及重定向。 –