0

我有 1 个模型供 2 个控制器使用 - 1 个由普通用户使用,1 个由管理员用户使用。两个控制器中的新建/创建、编辑/更新操作相同。我有一个所有操作都使用的共享视图,但问题在于该共享视图中的 form_for:对于普通用户,我必须使用:

form_for @my_model, do |f| 

对于管理员,我将不得不使用:

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

如何使用 2 个控制器重用视图?也许有更好的设计方法?

4

3 回答 3

1

我不确定您的设计模式是否是最好的。我想您正在使用 partial 来共享视图,您实际上可以locals在您的 partial 中传递一个参数render

# 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|

我不确定这是否有效,但希望它能给你一个提示。

您应该为此尝试使用管理命名空间方法

于 2012-08-14T08:49:21.247 回答
0

我想你应该记得部分.

于 2012-08-14T08:47:07.520 回答
0

据我了解,您的控制器基本相同(新建/创建、编辑/更新)。我建议添加一个before_filter来测试用户是否是管理员,然后才可以访问销毁操作。(我猜这是不同的方法)。

#Controller
before_filter :admin => :only => [:destroy]
于 2012-08-14T12:12:08.190 回答