1

我正在开发我的第一个应用程序,类似于用户可以发布帖子的 Pinterest。现在,所有发布的帖子都会立即发布。如何建立管理员批准流程,以便在管理员批准每个帖子之前不会发布帖子?

所以我在“Pins”下创建了一个名为“pinreview”的布尔值,每个帖子最初都是空白的。我将如何编辑控制器,以便公众可以在索引和显示视图中查看的引脚以及索引视图上的分页仅说明已批准的“引脚”?如果可以做到这一点,我如何构建一个管理页面,允许管理员查看非公开帖子提交并选中“pinreview”复选框?

我在下面附上了我的代码。谢谢!

架构.rb

create_table "pins", :force => true do |t|
    ...
    t.boolean  "pinreview"
end

pin_controller.rb

def index
  @pins = Pin.order("created_at desc").page(params[:page]).per_page(5)

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @pins }
  end
end

def show
  @pin = Pins.find(params[:id])

  respond_to do |format|
    format.html # show.html.erb
    format.json { render json: @pin }
  end
end

index.html.erb

<%= render @pins %>
<%= will_paginate @pins %>

_pins.html.erb

<%= pin.name %>
<%= pin.description %>
4

2 回答 2

7

作用域添加到您的 Pin 模型:

scope :approved, where(:pinreview => false)
scope :pending,  where(:pinreview => true)

我将建议另一个范围来帮助清理您的控制器:

scope :newest, order("created_at desc")

然后,您可以查询这些范围:

@pins = Pin.approved.newest.page(params[:page]).per_page(5)

要获得未经批准的 Pin 图,只需更改您的范围:

@pins = Pin.pending.newest.page(params[:page]).per_page(5)
于 2013-04-17T02:07:37.690 回答
1

如果您通常不想显示当前正在审核的任何 Pin 图,我发现也有帮助的是在控制器中集成“before_action”方法。

before_action :is_approved, only: :index

def is_approved
    @pins = Pin.all.where(:pinreview => false)
end

希望这可以帮助寻找不显示任何内容的整体解决方案的人,例如在索引上

于 2016-02-29T14:29:10.773 回答