0

ここでいくつかの役立つ回答を利用して、一日中アプリの仕上げを行っていましたが、この機能を実行する方法を知りたいです。post_controllerファイルに、作成日に基づいて作成された最新の上位 10 件の投稿を表示するというアイデアが設定されています。また、コメントのためにこれを行うことも計画しています。ファイル内のすべてのユーザーの投稿を表示していviews/post/index.html.erbます。このコード行はposts_controller: posts = Post.order('created_at DESC').limit(10). ここで徹底的に検索しましたが、他のユーザーがこれをどのように機能させたのかわかりません。洞察はありますか? 前もって感謝します。

投稿コントローラー

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
4

1 に答える 1