Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何查找Rails部分文件的文件名?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 如何查找Rails部分文件的文件名?

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视图中。该部分从与视图相同的目录中获取

在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'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