【问题标题】:After looping through table, rails displays an array of complete table [duplicate]遍历表格后,rails显示完整表格的数组[重复]
【发布时间】:2026-01-26 01:25:01
【问题描述】:

我正在尝试用 Ruby on rails 创建一个博客,我想在我的视图中显示 posts 表。就像我的美貌一样简单,有些事情会失败。在遍历整个表并将记录呈现到我的视图之后,它还会将一个包含完整表的数组呈现到我的视图中。

创建这个视图的代码是这样的:

<%= @posts.each do |post| %>
    <div class="post_wrapper"> 
        <h1 class="title">
          <%= post.title %>
        </h1>

        <p class="date">
          Submitted <%= time_ago_in_words(post.created_at) %> Ago
        </p>

        <p class="body">
          <%= post.body %>
        </p>
    </div>
    <p style="color:red; font-size:1.5em;">the array is added after the div</p>
<%end%>
<p style="color:red; font-size:1.5em;">but still inside the loop</p>
<br />
<%= link_to "New post", new_post_path %>

【问题讨论】:

    标签: ruby-on-rails arrays ruby view


    【解决方案1】:

    第一行应该只是&lt;% 而不是&lt;%=

    使用&lt;%= 将内部的任何内容呈现到 html 中。对于.each,您不需要渲染您正在使用的对象,因此&lt;% 可以正常工作。

    简单的语法错误:)

    【讨论】:

    • 确实解决了,谢谢!
    【解决方案2】:
    <%= @posts.each do |post| %>
       ...
    <%end%>
    

    这是因为&lt;%=符号,你必须使用&lt;%来代替,

    <% @posts.each do |post| %>
       ...
    <%end%>
    

    因为 each 返回调用它的数组,而您使用 &lt;%= 符号将运行 Ruby 代码并显示它,这就是为什么最后有调用 each 的数组的原因

    【讨论】:

    • 确实解决了,谢谢!
    【解决方案3】:

    你需要改变这一行

    <%= @posts.each do |post| %>
    

    <% @posts.each do |post| %>
    

    【讨论】:

    • 确实解决了,谢谢!
    【解决方案4】:

    尝试更改此代码:

    <%= @posts.each do |post| %>
    

    进入这个:

    <% @posts.each do |post| %>
    

    这个&lt;% @posts 符号表示你想一起显示实例变量,但你只想评估它。

    【讨论】:

    • 确实解决了,谢谢!