获取与控制器中的操作关联的视图的文件名

时间:2013-01-15 01:02:54

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我正在使用rails 3.2。我希望能够获取将由控制器中执行的操作呈现的视图的文件名。我想获取文件的最后修改日期,但我不确定如何动态获取视图的文件名。

2 个答案:

答案 0 :(得分:3)

Rails 3中当前模板的完整路径名:

在View环境中:

<%= @view_renderer.lookup_context.find_template(@virtual_path).identifier %>

在控制器操作中:

# example

def index
  @template_path = lookup_context.find_template("#{controller_path}/#{action_name}").identifier
end

答案 1 :(得分:1)

这在控制器操作中很难做到,我甚至不确定它是否可行,因为控制器操作不知道将呈现哪个视图(如果有的话),因为可以进行重定向。但是,如果您知道视图的文件扩展名并假设它的名称与操作相同,则可以执行以下操作:

Rails.root.join("app", "assets", "views", controller_name, action_name + ".html.erb").to_s

在视图中,您可以执行以下操作:

<%= __FILE__ %>