在我的索引.html.erb Rails模板中实现最新的帖子



在这里的一些有用答案的帮助下,我整天都在对我的应用程序进行最后的润色,并想知道如何执行此功能。我在post_controller文件中设置了一个想法,我想在其中显示根据创建日期创建的前 10 个最新帖子。我也计划为我的评论做这件事,以及最后。我正在显示所有用户在views/post/index.html.erb文件中发布。我在posts_controller: posts = Post.order('created_at DESC').limit(10)中写了这行代码。我已经在这里彻底搜索了,但不明白其他一些用户是如何让它工作的,有什么见解吗?提前谢谢。

posts_controller

class PostsController < ApplicationController
  before_action :set_post, only: [:show, :edit, :update, :vote]
  before_action :require_user, only: [:new, :create, :edit, :update, :vote]
  before_action :require_creator, only:[:edit, :update]
  def index
    posts = Post.order('created_at DESC').limit(10)
    @posts = Post.all.page(params[:page]).per_page(10)
  end
  def show
    @comment = Comment.new
  end
  def new
    @post = Post.new
  end
  def create
    @post = Post.new(post_params)
    @post.creator = current_user
    if @post.save
      flash[:notice] = "You created a post!"
      redirect_to posts_path
    else
      render :new
    end
  end
  def edit
  end
  def update
    @post = Post.find(params[:id])
    if @post.update(post_params)
      flash[:notice] = "You updated the post!"
      redirect_to post_path(@post)
    else
      render :edit
    end
  end
  def vote
    Vote.create(voteable: @post, creator: current_user, vote: params[:vote])
    respond_to do |format|
      format.js { render :vote } # Renders views/posts/vote.js.erb
    end
  end
  private
  def post_params
    params.require(:post).permit(:url, :title, :description)
  end
  def set_post
    @post = Post.find(params[:id])
  end
  def require_creator
    access_denied if @post.creator != current_user
  end
end
您在

index操作中声明的posts变量在您的视图中将不可用。 您需要做的是使用实例变量更新要检索帖子的行,如下所示:

def index
    @posts = Post.page(params[:page]).order('created_at DESC').per_page(10)
end

最新更新