2个控制器,1个共享视图 - 如何使用form_for

时间:2012-08-14 08:34:31

标签: ruby-on-rails ruby model-view-controller

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

form_for @my_model, do |f| 

对于管理员,我必须使用:

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

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

3 个答案:

答案 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]