我真的希望今晚得到解决,所以任何帮助都会很棒。
我将这个类方法添加到我的post.rb模型
中 def self.without_review
where(review: false)
end
我要做的是仅显示网站上review = 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
posts表的架构,用于显示如何设置“review”(最后一行)
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
UsersController(def show)
def show
@user = User.find(params[:id])
@posts = @user.posts.paginate page: params[:page], :per_page => 15
end
答案 0 :(得分:1)
您没有显示生成帖子实际列表的控制器/操作,但我猜您必须将Post.all
替换为Post.without_review
。