如何更改Rails 3控制器中的视图文件的默认path?
我有一个名为ProjectsController
的控制器。 它的动作,默认情况下,在app/views/projects
寻找视图。 我想在控制器中更改所有方法( index
, show
, new
, edit
等)的path。
例如:
class ProjectsController < ApplicationController #I'd like to be able to do something like this views_path 'views/mycustomfolder' def index #some code end def show #some code end def new #some code end def edit #some code end end
请注意我没有改变render
每个方法,但定义了所有的默认path。 这可能吗? 如果是这样,怎么样?
谢谢!
如果没有内置的方法,也许你可以覆盖该控制器的render
?
class MyController < ApplicationController # actions .. private def render(*args) options = args.extract_options! options[:template] = "/mycustomfolder/#{params[:action]}" super(*(args << options)) end end
不知道这在实践中有多好,或者是否一切正常。
请参阅ActionView :: ViewPaths :: ClassMethods#prepend_view_path 。
class ProjectsController < ApplicationController prepend_view_path 'app/views/mycustomfolder' ...
你可以在你的控制器里面这样做:
def self.controller_path "mycustomfolder" end
你可以添加如下内容:
paths.app.views << "app/views/myspecialdir"
在config / application.rb文件中,让rails在另一个目录中查看视图模板。 一个警告是,它仍然会查找匹配控制器的视图文件。 所以,如果你有一个名为HomeController的控制器,并且具有上述的视图configuration,它将查找名为“app / views / myspecialdir / home / index.html.erb”的东西来渲染。