1

我真的希望今晚能解决这个问题,所以任何帮助都会很棒。

我将这个类方法添加到我的 post.rb 模型中

  def self.without_review
    where(review: false)
  end

我要做的只是显示网站上所有评论 = false 的帖子。如果 review=true,我想在它们显示之前手动批准它们。现在,无论评论是真是假,所有帖子都会显示出来。

这是我的后控制器

class PostsController < ApplicationController
  before_filter :signed_in_user
  before_filter :load_post, only: :destroy

    def create
    @post = current_user.posts.build(params[:post])
    if @post.save
      flash[:success] = "Shared!"
      redirect_to root_path
    else
      @feed_items = []
      render 'static_pages/home'
    end
  end

  def destroy
    @post.destroy
    redirect_to root_path
  end

  private

    def correct_user
      @post = current_user.posts.find_by_id(params[:id])
      redirect_to root_path if @post.nil?
    end

    def load_post
      @post = current_user.admin? ? Post.find(params[:id]) : current_user.posts.find(params[:id])
    end

end

这是完整的 post.rb 模型

class Post < ActiveRecord::Base
  attr_accessible :content, :review
  belongs_to :user
  validates :user_id, presence: true
  validates :content, presence: true

  default_scope order: 'posts.created_at DESC'

      def self.without_review
    where(review: false)
  end


end

显示如何设置“评论”的帖子表的架构(最后一行)

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

静态页面控制器

class StaticPagesController < ApplicationController
  def home
    if signed_in?
      @post = current_user.posts.build
      @feed_items = current_user.feed.paginate(page: params[:page])
    end
  end


  def post1
    if signed_in?
      @post = current_user.posts.build
    end
  end


end

用户控制器(默认显示)

def show
@user = User.find(params[:id])
@posts = @user.posts.paginate page: params[:page], :per_page => 15
end
4

1 回答 1

1

您没有显示生成实际帖子列表的控制器/操作,但我想您必须在那里Post.all替换Post.without_review

于 2013-04-06T07:05:57.957 回答