2010-08-30 65 views
1

假设我将路由/连接到WelcomeController的索引操作。Rails 3中的模板路径

index.html.erb-Template内部我想从Rails.root向上显示模板的路径,即。

<h1> We are rendering: <%= how_do_i_do_this? %></h1> 

渲染到

<h1> We are rendering: app/views/presentation/index.html.erb</h1> 

在Rails 2我可以访问template.path,但是这并不能工作了

任何想法?

回答

0

由于在Rails中模板呈现的工作原理,您现在可以使用__FILE__来代替它。这适用于我:

<%= __FILE__.gsub(Rails.root.to_s, "") %> 

但是,可能有更好的方法来做到这一点,但我找不到它,当我去找。

+0

是的,这没有工作。然而,它带来的主要缺点是你不能将它分解成一个辅助方法,因为这会搞砸__FILE__常量。 – flitzwald 2010-08-30 13:49:55

0

瑞恩的答案有效。如果你也想把你的方法放在帮手里,使用Kernel#caller。这里是我用来做类似的一种方法:

def has_page_comment? code = nil 
    if code.nil? 
    # grab caller file, sanitize 
    code = caller.first.split(':').first.gsub(Rails.root.to_s,'').gsub('.html.erb','') 
    end 
    ... 
end