使用Rails进行敏捷Web开发3.2列出产品页面包含额外信息

时间:2013-06-23 00:16:28

标签: ruby-on-rails-3.2 views

嘿,我正在研究Ruby on Rails上的所有人使用Rile 3.2的Agile Web Development这本书,我遇到了一个我不知道如何修复的问题。我在app / views / products / index.html.erb

中创建了一个包含以下代码的产品视图
    <h1>Listing products</h1>

<table>
<%= @products.each do |product| %>
  <tr class="<%= cycle('list_line_odd', 'list_line_even') %>">

    <td>
      <%= image_tag(product.image_url, class: 'list_image') %>
    </td>

    <td class="list_description">
      <dl>
        <dt><%= product.title %></dt>
        <dd><%= truncate(strip_tags(product.description),
              length: 80) %></dd>
      </dl>  
    </td>

    <td class="list_actions"> 
      <%= link_to 'Show', product %><br/>
      <%= link_to 'Edit', edit_product_path(product) %><br/>
      <%= link_to 'Destroy', product, method: :delete,
                    data: { confirm: 'Are you sure?' } %>
    </td>
  </tr>
  <% end %>
</table>

<br />

<%= link_to 'New product', new_product_path %>

页面创建的此视图会正确显示所有内容,但会在页面顶部强制执行额外的描述:

[#\ n \ n CoffeeScript是正确的JavaScript。 ...&#34;,image_url:&#34; cs.jpg&#34;,价格:#,created_at:&#34; 2013-06-22 23:34:33&#34;,updated_at:&#34 ; 2013-06-22 23:34:33&#34;&gt;,#\ n Ruby是增长最快,最快的...&#34;,image_url:&#34; ruby​​.jpg&#34;,价格:#,created_at:&#34; 2013-06-22 23:34:33&#34;,updated_at:&#34; 2013-06-22 23:34:33&#34;&gt;,#\ n Rails测试处方是......&#34;,image_url:&#34; rtp.jpg&#34;,价格:#,created_at:&#34; 2013-06-22 23:34: 33&#34;,updated_at:&#34; 2013-06-22 23:34:33&#34;&gt;]

我不确定这是否是开发环境中的标准Rails输出。我的代码有什么不对的地方吗?我知道这可能是一个简单的问题,所以任何帮助都表示赞赏。希望我在说明中包含足够的信息,以便其他具有相同问题的人可以轻松找到解决方案。

1 个答案:

答案 0 :(得分:1)

问题出在这一行:

<%= @products.each do |product| %>

您不需要=,因为您只是迭代产品,而不是尝试从此语句生成输出到生成的HTML中。使用=,您基本上可以获得@products表的Ruby转储(您已经要求Ruby获取@products.each子句的输出并将其注入到<table>之间的HTML中。你的第一个<tr...>)。相反,使用:

<% @products.each do |product| %>