【问题标题】:How to set proper path when rendering file?渲染文件时如何设置正确的路径?
【发布时间】:2012-09-20 07:48:13
【问题描述】:

我有这样的问题:我想渲染 html 文件,但我无法设置文件的路径。

我需要说,我在 Windows 上运行 Rails。

在我看来,我有代码:

<%= render :file => '1509/1509/app/views/static_pages/index.html', :layout => false %>

但这给了我错误:

undefined method `virtual_path' for false:FalseClass

我的文件在这里:

     C:\1509\1509\app\views\static_pages

也试过了:

 <%= render :file => '/views/static_pages/index.html', :layout => false %>

但这给了我:

  Missing template /views/static_pages/index with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}. Searched in:
  * "c:/1509/1509/app/views"
  * "C:/Ruby192/lib/ruby/gems/1.9.1/gems/devise-2.1.0/app/views"
  * "c:/1509/1509"
  * "c:/"

我做错了什么?

【问题讨论】:

  • 你做错了斜线,我看到了,试试\ 而不是/
  • 用绝对路径试试:render :file =&gt; 'C:/1509/1509/app/views/static_pages/index.html'.
  • 第一个建议给了我错误 #2 和 secode - 我的问题中的错误 #1。
  • 尝试删除布局选项。根据Rails guides,默认情况下,文件在不使用当前布局的情况下呈现。

标签: ruby-on-rails windows rendering


【解决方案1】:

绝对路径是:

<%= render :file => 'c:/1509/1509/app/views/static_pages/index.html' %>

相对路径:

<%= render :file => 'static_pages/index.html' %>

【讨论】:

  • 还有一个,当我添加布局 false &lt;%= render :file =&gt; 'static_pages/index.html' , :layout =&gt; false %&gt; 得到错误:undefined method virtual_path for false:FalseClass
  • @MID 此选项在控制器内部用于覆盖默认布局。视图中的模板在没有布局的情况下呈现。所以,干脆不要使用这个选项。
  • 它继续使用布局(我的意思是它与页眉、页脚和内部容器一起显示。
  • @MID 我展示的代码已经过测试。除了 index.html 文件的内容之外,它绝对不包括任何内容。唯一出现的布局是 applicationl 的布局。如果您也想摆脱它,请在您的 action 中使用:render :layout =&gt; false,它负责显示模板 &lt;%= render :file .... %&gt;
  • 我添加了你在控制器中所说的内容,但仍然得到 - i.imgur.com/8XDdq.jpg
猜你喜欢
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 2013-11-25
  • 2011-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多