访问html.erb文件中的循环变量

时间:2015-07-03 06:04:14

标签: ruby-on-rails ruby heroku

所以我有一个循环遍历我的所有文章,每篇文章都有一个包含文件名称(png文件)的横幅。当我使用这段代码时使用heroku上传我的文件时遇到了问题:

ERROR 1064 (42000): sphinxql: syntax error, unexpected OR, expecting $end near 'OR cost=5'

更具体地说,我使用此代码在我的应用程序的另一部分设置了url部分:

<% @articles.visible.each do |article| %>
  <div class="article-card" style="background-image: url(/assets/blog_headers/<%=article.banner%>);">

我现在正在尝试在这里实现相同的逻辑,但是我无法从循环中访问文章变量,这就是我目前所拥有的:

url(<%= image_url('blog_headers/blog_header.png')%>)

3 个答案:

答案 0 :(得分:1)

一旦你进入了一个erb标签,(<%= %>)你只是简单的红宝石......你不应该使用另一个嵌套的erb标签。

例如,而不是:

<%= image_url('blog_headers/<%=article.banner%>')%>

使用:

<%= image_url("blog_headers/#{article.banner}")%>

请注意,我还将单引号:'更改为双引号",以便对字符串进行插值(并将#{}评估为ruby)

答案 1 :(得分:0)

内部&lt;%= image_url(&#39; blog_headers /&lt;%= article.banner%&gt;&#39;)%&gt; 都是红宝石。不要使用&lt; %%&gt;再次。你可以试试这个:

<%= image_url('blog_headers/'+article.banner+'\'')%>

或试试这个:

<div class="article-card" style='background-image:  url(<%= image_url("blog_headers/#{article.banner}")%>);'> 

小心引用。

答案 2 :(得分:0)

以下是您应该对视图应用的方式,如下所示......

String foo = Objects.toString(getFoo());

如果您没有任何应该出现在图像上的消息文本,那么您可以使用上面的代码来填充图像。

否则通过在div标签中指定样式将其设置为背景图像。