2012-01-17 22 views
1

我有一個rails控制器,其中edit動作顯示一個表單,其中可以更改對象的所有值。所以現在當用戶訪問/controller/1時,我想要做的和訪問/controller/1/edit時完全一樣。Rails在調用show動作時執行編輯

我必須在不修改或添加路線的情況下實現此目的,也不要在控制器中使用redirect_to。否則,JQueryMobile會跟蹤它的歷史記錄中的重定向。

我試圖通過alias :show :edit做到這一點的紅寶石方式,但它失敗了,因爲鐵軌仍在搜尋show.html.erb

如何做到這一點?

回答

1

我相信你可以如下定義show行動:

def show 
    edit 
    render :action => :edit 
end 

但是這真的很尷尬。如果您有任何操作edit,它肯定會忽略所有過濾器。

爲什麼你不能在路線中使用一些規則呢?或者最好不要發送用戶到show行動?

0

添加自定義路線以將show動作映射到編輯動作。

resources :users, except: :show do 
    get "", as: "", on: :member, to: :edit 
end 
+0

不幸的是,這似乎不工作(在rails 4.0.4中測試),因爲自定義定義的路由優先於由'resources:users'定義的路由 - 這意味着GET to/users/new將會以id:'new'觸發編輯操作。 – 2014-05-30 06:56:59

+0

它可以通過破解路由來修復以強制新路由的優先級 - 編輯答案以反映這一點 – 2014-05-30 07:05:47