Основы пользовательских маршрутов в 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 через reviews, чтобы мы могли получить доступ к нашей пользовательской ассоциации маршрутов. Здесь вы увидите, что пользователь 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!

Оцените статью
devanswers.ru
Добавить комментарий