Utiliser ce que j'ai appris à l'école en ligne J'ai décidé d'écrire ceci sous forme de mémorandum. Puisqu'il est écrit par un amateur, j'apprécierais que vous me pardonniez s'il y avait quelque chose de différent. C'est rapide, mais allons-y pour la première fois.
rails new Le nom de l'application que vous souhaitez créer-d postgresql
 Les rails de base utilisent par défaut SQLite3, vous pouvez donc spécifier la base de données avec -d.
【Terminal】
rails db:create
【gemfile】
gem 'devise'
--Lorsque l'ajout est terminé, exécutez ce qui suit
【Terminal】
bundle install
【Terminal】
rails g devise:install(Attention à oublier le côlon)
❇︎ La raison pour laquelle les rails g conçoivent: install est que l'appareil utilise une commande dédiée et Vous devez le faire car vous devez créer un fichier de configuration
【Terminal】
rails g devise user(Je n'ai pas besoin d'un colon)
【Terminal】
rails db:migrate
<% if user_signed_in? %>
<%= link_to "Se déconnecter", destroy_user_session_path, method: :delete %>
<%= link_to "Haut", products_path %>
<%= link_to "Vers l'écran de publication", new_product_path %>
<% else %>
<%= link_to "S'identifier", new_user_session_path %>
<%= link_to "s'inscrire", new_user_registration_path %>
<% end %>
【Terminal】
rails g model product
--Une fois terminé, modifiez l'élément du fichier de migration comme suit
class CreateProducts < ActiveRecord::Migration[5.2]
def change
create_table :products do |t|
t.string :name
t.integer :price
t.integer :user_id
#Jusque là
t.timestamps
end
end
end
【Terminal】
rails db:migrate
--Modifier les données dans db / seedss.rb
【seeds.rb】
Product.create(name: "Premiers pas avec Ruby", price: 2500, user_id: 1)
Product.create(name: "Notions de base sur les rails", price: 2900, user_id: 1)
Product.create(name: "Bases de PHP", price: 1500, user_id: 1)
【Terminal】
rails db:seed
【Terminal】
rails g controller Products
--Modifiez config / routes.rb comme suit
Rails.application.routes.draw do
root to: 'products#index'
resources :products
end
【products_controller.rb】
class ProductsController < ApplicationController
def index
@products= Product.all
end
end
【index.html.erb】
<h1>Nouvelle liste de messages</h1>
<% if user_signed_in? %>
<% @products.each do |product| %>
<p>Nom du produit:<%= product.name %></p>
<p>Somme d'argent:<%= product.price %></p>
<% else %>
Excusez-moi, mais veuillez vous connecter
<% end %>
<% end %>
--Lorsque vous implémentez la fonction de connexion avec l'appareil, l'écran de connexion / inscription est automatiquement généré, mais il est applicable dans les vues. Le fichier à utiliser n'existe pas. Par conséquent, il n'est pas possible d'apporter des modifications à l'écran de connexion tel quel. Si vous souhaitez apporter des modifications, vous devez utiliser la commande devise pour générer un fichier de vue.
【Terminal】
rails g devise:views
【products_controller.rb】
class ProductsController < ApplicationController
def new
@product = Product.new
end
end
【new.html.erb】
<h1>Nouveau poste</h1>
<%= form_with model: @product, local: true do |form| %>
<p>Nom du produit:<%= form.text_field :name, required: true %></p>
<p>Somme d'argent:<%= form.text_field :age, required: true %></p>
<%= form.submit "Envoyer" %>
<% end %>
【products_controller.rb】
def create
Product.create(name: product_params[:name], price: product_params[:price],
user_id: current_user.id)
redirect_to root_path
end
――Une fois que vous pouvez définir l'action de création, le paramètre fort est ici! Décrit comme suit en bas du contrôleur de produits
private
def product_params
params.require(:user).permit(:name, :price)
end
【products_controller.rb】
class ProductsController < ApplicationController
before_action :move_to_index, except: :index ← Ajouter ici
def index
@products = Product.all
end
def new
@product = Product.new
end
def create
Product.create(name: product_params[:name], price: product_params[:price], user_id: current_user.id)
end
def move_to_index
redirect_to action: :index unless user_signed_in?← Ajouter ici
end
Omis ci-dessous
【routes.rb】
Rails.application.routes.draw do
root to: 'products#index'
resources :products
resources :users, only: :show ← Ajouter ceci
end
--Cette fois, seule l'action show est utilisée dans users_controller, donc écrivez comme ci-dessus.
【Terminal】
rails g controller Users
【users_controller.rb】
class UsersController < ApplicationController
def show
@products = Product.where(user_id: current_user.id)
end
end
【show.html.erb】
<% @products.each do |product| %>
<p>Nom du produit:<%= product.name %></p>
<p>prix:<%= product.price %></p>
<% end %>
<%= link_to 'vers ma page', user_path(current_user.id) %>
【index.html.erb】
<h1>Nouvelle liste de messages</h1>
<% if user_signed_in? %>
<% @products.each do |product| %>
<p>Nom du produit:<%= product.name %></p>
<p>Somme d'argent:<%= product.price %></p>
<p>No de membre.:<%= product.user.id %></p>
<% else %>
Excusez-moi, mais veuillez vous connecter
<% end %>
<% end %>
――Cependant, si cela reste tel quel, une erreur se produira. Que faire d'ici est le processus d'association Éxécuter. En tant qu'image, une image qui combine l'utilisateur et le produit
--Modifiez product.rb dans l'application / les modèles comme suit
【product.rb】
class Product < ApplicationRecord
belongs_to :utilisateur ← Décrivez ici
end
――Si vous expliquez, à qui appartient le produit? Si vous y réfléchissez, vous devriez penser que vous êtes un utilisateur. Ecrire comme ça
--Modifiez user.rb dans l'application / les modèles comme suit
【user.rb】
class User < ApplicationRecord
#Include default devise modules. Others available are:
#:confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :produits ← Décrivez ici
end
――Expliquant, qu'est-ce que l'utilisateur a beaucoup? Si vous pensez que vous avez beaucoup de produits Je l'écrirai comme ça
【users_controller.rb】
class UsersController < ApplicationController
def show
@products = Product.where(user_id: current_user.id)
end
end
【users_controller.rb】
def show
@products = User.find(current_user.id)
end
【show.html.erb】
<% @products.each do |product| %>
<p>Nom du produit:<%= product.name %></p>
<p>prix:<%= product.price %></p>
<% end %>
【show.html.erb】
<% @user.products.each do |product| %>(←@user.Changement de produits)
<p>Nom du produit:<%= product.name %></p>
<p>prix:<%= product.price %></p>
<% end %>
Avec cela, la mise en œuvre de la fonction de connexion et le processus approximatif de traitement brutal sont terminés. Je voulais expliquer l'implémentation des actions d'édition et de mise à jour, la fonction flash, la décoration avec bootstrap, etc., mais cette fois je vais le laisser ici. À l'avenir, lors de la création de votre propre portefeuille, lors de l'implémentation de la fonction de connexion, il est préférable d'implémenter d'abord la conception, puis d'effectuer un traitement grossier, etc., afin qu'il soit moins susceptible de rester bloqué. (J'étais comme ça lol) Merci beaucoup.
Recommended Posts