我有1个模型,由2个控制器使用 - 1个由普通用户使用,1个由管理员用户使用。两个控制器中的新建/创建,编辑/更新操作相同。我有一个共享视图,所有操作都使用它,但问题在于共享视图中的form_for: 对于普通用户,我将不得不使用:
form_for @my_model, do |f|
对于管理员,我必须使用:
form_for [:admin, @my_model] do |f|
如何使用2个控制器重用视图?也许有更好的方法来设计它?
答案 0 :(得分:1)
我不确定你的设计模式是否最好。我假设您使用partial来共享视图,您实际上可以在部分locals
中传递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|
我不确定这是否有效,但希望它能让你提醒。
您应该尝试使用admin namespace method。
答案 1 :(得分:0)
我认为你应该记得partial。
答案 2 :(得分:0)
据我了解,您的控制器基本相同(新建/创建,编辑/更新)。 我建议添加before_filter,测试用户是否为管理员,然后才能访问销毁操作。 (我猜这是不同的方法。)
#Controller
before_filter :admin => :only => [:destroy]