Rails의 사용자 지정 경로 기본 사항

소프트웨어 엔지니어링 프로그램을 위한 프로젝트를 진행하고 있습니다. 프로필 페이지에 일부 정보를 표시하려면 맞춤 경로를 포함해야 했습니다. 여기 React/Rails 애플리케이션에서 커스텀 라우트를 구축하는 방법에 대한 약간의 정보가 있습니다.

특정 순서로 이 작업을 수행할 필요는 없지만 프런트엔드와 백엔드 사이의 브리지가 경로이므로 거기서 시작하겠습니다. 따라서 routes.rb 파일에 프로필을 정의합니다.

Rails.application.routes.draw do
  namespace :api do
    get "/users", to: "users#index"
    post "/signup", to: "users#create"
    get "/me", to: "users#show"
    post "/login", to: "sessions#create"
    delete "/logout", to: "sessions#destroy"
    get "/profile", to: "users#profile"

    resources :breweries do
      resources :reviews, shallow: true
    end
  end
end


다음으로 검토를 통해 has_many 관계를 선언하여 사용자 지정 경로 연결에 액세스할 수 있습니다. 여기에서 사용자has_many :reviewed_breweries, through: :reviews, source: :brewery가 표시됩니다.

class User < ApplicationRecord

  has_many :breweries,  dependent: :destroy

  has_many :reviews 

  has_many :reviewed_breweries, through: :reviews, source: 
  :brewery

  has_secure_password

  validates :username, presence: true, uniqueness: true

end


우리는 커스텀 라우트가 사용자 컨트롤러에서 우리에게 돌려줄 데이터를 정의할 것입니다. 이 경우 사용자가 리뷰를 남긴 모든 양조장을 표시하도록 프로필을 정의합니다.

class Api::UsersController < ApplicationController
  skip_before_action :authorized!, only: :create

  def index
    render json: User.all
  end

  def create
    user = User.create!(user_params)
    session[:user_id] = user.id
    render json: user, status: :created
  end

  def show
    render json: @current_user
  end

  def profile
    reviewed = @current_user.reviewed_breweries
    render json: reviewed
  end

  private
  def serialized_user
    @user.to_json(include: :breweries)
  end

  def user_params
    params.permit(:username, :password, 
  :password_confirmation, :image_url, :bio)
  end
end


다음으로 우리가 만든 Profile.js 파일의 프런트엔드에서 가져오기 요청을 만든 다음 사용자가 볼 수 있도록 페이지에 원하는 데이터를 렌더링합니다. 마지막으로 App.js 파일에 경로를 추가하여 Profile.js 파일을 렌더링합니다.

반환되는 것은 현재 로그인한 사용자의 프로필 페이지이며 사용자가 리뷰를 남긴 모든 양조장 목록을 표시합니다. 이것이 저에게 그랬던 것처럼 여러분이 학습 과정에서 몇 가지 기본 사항을 유지하는 데 도움이 되기를 바랍니다.
Happy Coding!

좋은 웹페이지 즐겨찾기