迭代Rails对象时显示额外的按钮

时间:2018-09-25 17:01:47

标签: ruby-on-rails

我遇到了一个问题,页面上显示了一个额外的向上和向下按钮。我怎样才能解决这个问题? enter image description here 我的看法如下:

<% @group.posts.each do |p| %>

<tr>
  <td>
    <%= p.body %>
  </td>

  <td>
    <div>
      <button type="button" class="btn btn-default btn-sm">
        <span class="glyphicon-arrow-up">Up</span>
      </button>
      <%= p.votes %>
      <button type="button" class="btn btn-default btn-sm">
        <span class="glyphicon-arrow-down">Down</span>
      </button>
    </div>
  </td>

</tr>

<% end %>

我的控制器:

def show
  @group = Group.find_by_name(params[:name])
  @post = @group.posts.new
end

2 个答案:

答案 0 :(得分:3)

通过致电

@group.posts.new

您正在向该组添加一个空的帖子,您会看到为其显示的按钮。

您可以将之前的所有帖子分配给控制器中的另一个变量,并使用它来呈现所有帖子

@posts = @group.posts.to_a

或通过进行@post初始化有点不同,

@post = Post.new(group: @group)

或者,您可以过滤要为其渲染按钮的帖子:

@group.posts.select(&:persisted?).each do |p|

答案 1 :(得分:0)

因为您在控制器中执行了@post = @group.posts.new。它添加了空的Post对象。

您可以在迭代reload => @group.posts.reload.each do |p|

之前重新加载它