【问题标题】:rails ruby iterate through partials in directoryrails ruby​​ 遍历目录中的部分
【发布时间】:2012-10-30 22:25:28
【问题描述】:

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

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

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

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

file

它列出了文件名,所以我知道循环和目录位置的工作。我认为的问题是渲染正在寻找一个字符串。所以我已经尝试了各种搜索谷歌和这里的东西,比如#{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 %>

【问题讨论】:

  • 我认为应该是 "#{file}" %>
  • 你在循环中得到的文件对象是什么。你能帮我打印出来吗?以及您在我的上述解决方案中看到的错误是什么?
  • 感谢您的帮助...文件是部分“_part1”、“_part2”...等...错误类似于以下评论:缺少部分应用程序/视图/主/显示/_scene1。 html 与 {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}。在以下位置搜索:*“C:/railsProjects/introAnime/app/views”

标签: ruby-on-rails ruby loops partial


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的澄清,但渲染和 DIR 参考必须有一些问题。您的建议产生:缺少部分 app/views/main/show/_scene1.html with {:locale=>[ :en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}。在以下位置搜索:*“C:/railsProjects/introAnime/app/views”
  • 看起来不错,但出现此错误:缺少部分 C:/railsProjects/introAnime/app/views/main/show/_scene1.html with {:locale=>[:en], :formats=> [:html], :handlers=>[:erb, :builder, :coffee]}。在以下位置搜索:*“C:/railsProjects/introAnime/app/views”
  • 我在这里的相对路径要了我的命!我想我不需要使用 dir["path"].each 方法,因为它附加了文件的路径!
  • 我不知道。 C:/railsProjects/introAnime/app/views/main/show/_scene1.html 看起来像正确的路径,根据Rails Guides 它应该在完整路径时工作。唯一奇怪的是正斜杠而不是反斜杠。
  • @twinturbotom,您还可以尝试一件事:render :file =&gt; ...。请参阅我的更新答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-25
  • 2016-01-22
  • 2018-10-09
  • 2016-07-24
  • 2011-08-05
相关资源
最近更新 更多