Ruby on rails 如何查找Rails部分文件的文件名?
在Rails 3中,如何找到将由Ruby on rails 如何查找Rails部分文件的文件名?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,在Rails 3中,如何找到将由render'foo'渲染的部分的文件名?简单地说,如果在控制器中调用render,在视图中从标记中调用render,则会得到两种不同的结果 在控制器bar中,调用render'foo'将导致呈现文件/app/views/bar/foo.html.erb 在视图中,例如/app/views/bar/show.html.erb调用将导致将部分/app/views/bar/_foo.html.erb包含到show.html.erb视图中。该部分从与视图相同的目录中获取
render'foo'
渲染的部分的文件名?简单地说,如果在控制器中调用render
,在视图中从标记中调用render
,则会得到两种不同的结果
在控制器bar
中,调用render'foo'
将导致呈现文件/app/views/bar/foo.html.erb
在视图中,例如/app/views/bar/show.html.erb
调用
将导致将部分/app/views/bar/_foo.html.erb
包含到show.html.erb
视图中。该部分从与视图相同的目录中获取
为了使事情更复杂一些,如果将文件夹名称放入渲染中,例如render'shared/foo'
,这是相对于/app/views
因此:
Controller:render'foo'=/app/views//foo.html.erb
呈现'shared/foo'=/app/views/shared/foo.html.erb
视图:=\u foo.html.erb在视图目录中
=/app/views/shared/_foo.html.erb
另外,如果在render
命令中指定不同的:格式,则html.erb
需要相应更改(例如js.erb
,js.coffee.erb
等)
需要澄清的是,如果从控制器中调用render
,以及从视图中的标记中调用render
,则会得到两种不同的结果
在控制器bar
中,调用render'foo'
将导致呈现文件/app/views/bar/foo.html.erb
在视图中,例如/app/views/bar/show.html.erb
调用
将导致将部分/app/views/bar/_foo.html.erb
包含到show.html.erb
视图中。该部分从与视图相同的目录中获取
为了使事情更复杂一些,如果将文件夹名称放入渲染中,例如render'shared/foo'
,这是相对于/app/views
因此:
Controller:render'foo'=/app/views//foo.html.erb
呈现'shared/foo'=/app/views/shared/foo.html.erb
视图:=\u foo.html.erb在视图目录中
=/app/views/shared/_foo.html.erb
另外,如果在render
命令中指定不同的:格式,则html.erb
需要相应更改(例如js.erb
,js.coffee.erb
等)
取决于从何处调用。最可能位于:/app/views/foos/show.html.erb(或.haml.slim)。我认为@Zenph的意思是/app/views/{current\u controller's\u folder}/\u foo.html.erb
@如果对render
的调用是在控制器操作中,Zenph的回答确实适用。上面的回答似乎既正确又错误。即使在控制器(而不是应用程序控制器)中,渲染仍然相对于控制器的视图。这取决于从何处调用渲染。最可能位于:/app/views/foos/show.html.erb(或.haml.slim)。我认为@Zenph的意思是/app/views/{current\u controller's\u folder}/\u foo.html.erb
@如果对render
的调用是在控制器操作中,Zenph的回答确实适用。上面的回答似乎既正确又错误。即使在控制器(而不是应用程序控制器)中,渲染仍相对于控制器的视图。
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