2012-08-14 43 views
0

我有1個模型,2個控制器使用 - 1個普通用戶和1個管理員用戶。新建/創建,編輯/更新操作在兩個控制器中都是相同的。我有一個共同的觀點,其使用的所有動作,但問題是用的form_for在共享視圖: 對於普通用戶,我將不得不使用:2個控制器,1個共享視圖 - 如何使用form_for

form_for @my_model, do |f| 

對於管理員,我將不得不使用:

form_for [:admin, @my_model] do |f| 

如何重新使用2個控制器的視圖?也許有更好的設計方法呢?

回答

1

我不確定您的設計模式是否最好。我假設你正在使用部分共享的觀點,實際上你可以在你的部分render傳遞locals參數:

# user 
<%= render :partial => "form", :locals => { :zone => @my_model } %> 

# admin 
<%= render :partial => "form", :locals => { :zone => [:admin, @my_model] } %> 

# your form_for tag in the shared view 
form_for(zone) do |f| 

我不知道,如果這個工程,但希望它讓你擡頭。

您應該嘗試使用admin namespace method

+0

我實際上使用的是管理員名稱空間,只是在將本地人傳遞給視圖時遇到了問題。真棒的東西,謝謝! – 2012-08-15 14:07:36

0

據我所知,你的控制器基本上是相同的(新建/創建,編輯/更新)。 我建議添加一個before_filter,它測試用戶是否是管理員,然後才允許訪問銷燬操作。 (我猜這是不同的方法)。

#Controller 
before_filter :admin => :only => [:destroy] 
相關問題