0

首先,这是参考表的架构

create_table "microposts", :force => true do |t|
    t.text     "content"
    t.integer  "user_id"
    t.datetime "created_at",                         :null => false
    t.boolean  "review",          :default => false

我想创建一个视图,允许管理员查看 review = true 的所有帖子,然后允许管理员批准或删除单个帖子。

更新 我将此添加到用户控制器中

class UserController < ApplicationController
def review
    @microposts = Micropost.where(review: true)
  end

这是我到目前为止的 review.html.erb

   <% provide(:title, 'Review Shares') %>

<% if signed_in? && if current_user.admin? %>
<% @microposts.each do |mpost| %>
    <%= link_to "delete", "/micropost/#{mpost.id}", method: :delete,
                                 confirm: "You sure?",
                                 title: mpost.content %>
  <% end %>
<% end %>
  <% end %>

我怎样才能让它实际显示帖子,并选择将其“评论”值更改为 false?

4

2 回答 2

1

你必须在你的控制器的一个动作中有这样的东西

  @microposts = Micropost.where(review: true)

然后你可以做类似的事情:

  <% @microposts.each do |mpost| %>
   <%= mpost.content %>
   <%= link_to "review", "/microposts/#{mpost.id}/review" , :remote=>true %>
   <%= link_to "delete", "/microposts/#{mpost.id}", method: :delete,
                                 confirm: "Confirm delete",
                                 title: mpost.content %>
  <% end %>

在您的路线文件中:

match "/microposts/:id/review" => "microposts#review"

然后在 microposts_controller.rb 中:

def review
  @micropost = Micropost.find(params[:id])
  @micropost.review = true
  @micropost.save
  render :js=>"alert('reviewed = true');"
end

或者

def review
  @micropost = Micropost.find(params[:id])
  @micropost.review = true
  @micropost.save
end

并添加以下文件:

app/views/microposts/review.js.erb

在那个文件中放:

alert('reviewed = true');
于 2013-04-06T21:48:30.617 回答
0

你可以创建一个范围

scope :reviewed, where(:review => true)

Model.reviewed将返回 review 为 true 的所有记录。

@reviewed_microposts = Micropost.reviewed (assuming the model name is Micropost)

此实例变量可以在视图中迭代并显示。

于 2013-04-06T21:35:48.910 回答