4

对于那些帮助..谢谢。仍然没有解决方案,但越来越近了。我认为的错误是因为我的“文件”评估为“app/views/main/show/_partial.html.erb”。并渲染添加它自己的相对路径。所以我想我需要列出文件名。也许是 dir.foreach 或 dir.glob 类型的命令。我会继续挖掘。谢谢!

我有一个目录,里面装满了我想在页面中调用的部分内容。所以我写了一个循环,但它会产生错误。

<% Dir["app/views/main/show/*"].each do |file| %>
  <%= render #{file} %>
<% end %>

当我用一个简单的替换渲染线时

文件

它列出了文件名,所以我知道循环和目录位置的工作。我认为的问题是渲染正在寻找一个字符串。所以我已经尝试了各种搜索谷歌和这里的东西,比如#{file},首先创建一个变量,原始的,......等等。

我也认为渲染可能在相对于 Dir 的不同目录中查找。我会在那里尝试一些东西。

我应该如何处理这个?我准备从 Dir 切换到 Dir.foreach 或任何其他有意义的策略。

谢谢。

编辑:这是我实施的解决方案(目录路径从上面更改):

<% Dir["app/views/partials/show/*.html.erb"].each do |file| %>
<p> <%= render 'partials/show/' + File.basename(file,'.html.erb').slice!(1..-1) %></p>
<% end %>
4

1 回答 1

8

file已经是一个字符串,所以不需要转义。此外,您必须提供完整路径。这应该有效:

<% Dir["app/views/main/show/*"].each do |file| %>
  <%= render :file => Rails.root.join(file).to_s %>
<% end %>

#{}仅在双引号内有效。例如"#{file}",但在这种情况下,这不是必需的。你可以只使用file.

于 2012-10-23T14:40:25.030 回答