Rails 3:获取当前视图的路径助手?

时间:2011-06-24 13:47:18

标签: ruby-on-rails ruby-on-rails-3 path views routes

我有兴趣为我的布局创建一个标准,其中每个视图都将包装在一个根据特定约定命名的容器中。

例如,如果我有:

resources :foos

我希望视图包含在div中,如下所示:

<div id="foos_view"> foos#index here </div>
<div id="foo_view"> foos#show here </div>
<div id="new_foo_view"> foos#new here </div>
<div id="edit_foo_view"> foos#edit here </div>

所以,基本上我想使用路线名称,但用'path'代替'view'。

我的问题是,是否有某种方法可以获取当前视图的路径名称?

IE中。如果我的请求是example.com/foos/new,我可以在视图或控制器中调用任何可以返回new_foo_path的内容吗?

谢谢!

1 个答案:

答案 0 :(得分:5)

我想不出一个简单的方法,因为路径助手只是调用path_for()并填写所需的参数,所以没有方法调用反向执行。

但是,这是Ruby,因此编写快速帮助程序来返回所需的字符串相当容易。可以通过controller.controller_name访问当前控制器名称,通过controller.action_name访问操作名称。

这样的事情应该对你有用:

def html_id

   string = ""

   if controller.action_name =~ /new|edit/
      string += controller.action_name + "_"
   end

   if controller.action_name =~ /index|create/
     string += controller.controller_name
   else
     string += controller.controller_name.singularize
   end

   return string += "_view"

 end