2012-08-14 71 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] 
相关问题