2012-11-11 21 views
0

在Rails 3中,如何查找由render 'foo'呈現的部分文件名?如何找到Rails部分的文件名?

+0

取決於它從哪裏被調用。最有可能位於:/app/views/foos/show.html.erb(或.haml,.slim)。 –

+0

我認爲@Zenph的意思是'/ app/views/{current_controller's_folder}/_ foo.html.erb'。 @ Zenph的答案確實適用於'render'的調用在你的控制器動作中。 –

+0

看來上面是正確和錯誤的。即使在控制器(不是application_controller)中,渲染仍然相對於控制器的視圖。 –

回答

3

要明確一點,如果您從控制器中調用render,並從視圖中的標記中調用render,則會得到兩個不同的結果。

在控制器bar調用render 'foo'將導致呈現文件<project>/app/views/bar/foo.html.erb

視圖例如<project>/app/views/bar/show.html.erb致電<% render 'foo' %>將導致將局部<project>/app/views/bar/_foo.html.erb包括到show.html.erb視圖中。部分來自與視圖相同的目錄。

爲了使事情更復雜一點,如果您將文件夾名稱放入渲染中,例如render 'shared/foo'這是相對於<project>/app/views

所以:

Controller: render 'foo'    = <project>/app/views/<controller name>/foo.html.erb 
      render 'shared/foo'  = <project>/app/views/shared/foo.html.erb 
View:  <% render 'foo' %>  = _foo.html.erb in directory of view 
      <% render 'shared/foo' %> = <project>/app/views/shared/_foo.html.erb 

附:如果您在render命令來指定不同的:format,那麼html.erb需要相應地改變(例如js.erbjs.coffee.erb,等等等等)。

http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials