Я работаю над проектом для своей программы по разработке программного обеспечения. Мне нужно было создать пользовательский маршрут для отображения некоторой информации на странице профиля. Итак, вот небольшая информация о том, как создать пользовательский маршрут в приложении 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!