Nutzen Sie das, was ich in der Online-Schule gelernt habe Ich beschloss, dies als Memorandum zu schreiben. Da es von einem Amateur geschrieben wurde, würde ich es begrüßen, wenn Sie mir vergeben könnten, wenn es etwas anderes gäbe. Es ist schnell, aber lass uns zum ersten Mal gehen.
Schienen neu Der Name der App, die Sie erstellen möchten-d postgresql
❇︎ Standardschienen sind standardmäßig SQLite3, sodass Sie die Datenbank mit -d angeben können.
【Terminal】
rails db:create
--Drop den Ordner Ihrer eigenen App in VS Code. Dann können Sie es mit VS Code bearbeiten.
--Schreibe folgendes in gemfile
【gemfile】
gem 'devise'
【Terminal】
bundle install
【Terminal】
rails g devise:install(Achten Sie darauf, den Doppelpunkt nicht zu vergessen)
❇︎ Der Grund für Rails g Devise: Install ist, dass Devise einen dedizierten Befehl verwendet und Sie müssen dies tun, da Sie eine Konfigurationsdatei erstellen müssen
【Terminal】
rails g devise user(Ich brauche keinen Doppelpunkt)
【Terminal】
rails db:migrate
<% if user_signed_in? %>
<%= link_to "Ausloggen", destroy_user_session_path, method: :delete %>
<%= link_to "oben", products_path %>
<%= link_to "Zum Buchungsbildschirm", new_product_path %>
<% else %>
<%= link_to "Einloggen", new_user_session_path %>
<%= link_to "Anmelden", new_user_registration_path %>
<% end %>
--Schreib das Folgende
【Terminal】
rails g model product
class CreateProducts < ActiveRecord::Migration[5.2]
def change
create_table :products do |t|
t.string :name
t.integer :price
t.integer :user_id
#Bisher
t.timestamps
end
end
end
【Terminal】
rails db:migrate
【seeds.rb】
Product.create(name: "Erste Schritte mit Ruby", price: 2500, user_id: 1)
Product.create(name: "Rails Grundlagen", price: 2900, user_id: 1)
Product.create(name: "PHP-Grundlagen", price: 1500, user_id: 1)
【Terminal】
rails db:seed
--Wenn dies keinen Fehler verursacht, wird es erfolgreich in der Tabelle registriert.
【Terminal】
rails g controller Products
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>Neue Beitragsliste</h1>
<% if user_signed_in? %>
<% @products.each do |product| %>
<p>Produktname:<%= product.name %></p>
<p>Geldbetrag:<%= product.price %></p>
<% else %>
Entschuldigung, aber bitte einloggen
<% end %>
<% end %>
--Wenn Sie die Anmeldefunktion mit devise implementieren, wird der Anmelde- / Anmeldebildschirm automatisch generiert, ist jedoch in Ansichten anwendbar. Die zu verwendende Datei existiert nicht. Daher ist es nicht möglich, Änderungen am Anmeldebildschirm vorzunehmen. Wenn Sie Änderungen vornehmen möchten, müssen Sie den Befehl devise verwenden, um eine Ansichtsdatei zu generieren.
【Terminal】
rails g devise:views
【products_controller.rb】
class ProductsController < ApplicationController
def new
@product = Product.new
end
end
【new.html.erb】
<h1>Neuer Beitrag</h1>
<%= form_with model: @product, local: true do |form| %>
<p>Produktname:<%= form.text_field :name, required: true %></p>
<p>Geldbetrag:<%= form.text_field :age, required: true %></p>
<%= form.submit "Senden" %>
<% 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
――Nachdem Sie die Erstellungsaktion definieren können, ist der starke Parameter hier! Beschrieben wie folgt am unteren Rand des Produktcontrollers
private
def product_params
params.require(:user).permit(:name, :price)
end
――Erläutert dies, dass nur der dem Benutzermodell zugeordnete (: Name,: Preis) zulässig ist. Das definieren
【products_controller.rb】
class ProductsController < ApplicationController
before_action :move_to_index, except: :index ← Hier hinzufügen
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?← Hier hinzufügen
end
Unten weggelassen
【routes.rb】
Rails.application.routes.draw do
root to: 'products#index'
resources :products
resources :users, only: :show ← Füge dies hinzu
end
【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>Produktname:<%= product.name %></p>
<p>Preis:<%= product.price %></p>
<% end %>
<%= link_to 'zu meiner Seite', user_path(current_user.id) %>
【index.html.erb】
<h1>Neue Beitragsliste</h1>
<% if user_signed_in? %>
<% @products.each do |product| %>
<p>Produktname:<%= product.name %></p>
<p>Geldbetrag:<%= product.price %></p>
<p>Mitgliedsnr.:<%= product.user.id %></p>
<% else %>
Entschuldigung, aber bitte einloggen
<% end %>
<% end %>
―― Wenn dies jedoch unverändert bleibt, tritt ein Fehler auf. Was von hier aus zu tun ist, ist der Prozess, der Assoziation genannt wird Ausführen. Als Bild ein Bild, das Benutzer und Produkt kombiniert
【product.rb】
class Product < ApplicationRecord
belongs_to :Benutzer ← Beschreibe hier
end
――Wenn Sie erklären, wem gehört das Produkt? Wenn Sie darüber nachdenken, sollten Sie denken, dass Sie ein Benutzer sind. Schreiben Sie so
【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 :Produkte ← Beschreiben Sie hier
end
――Erläutern, was hat der Benutzer viel? Wenn Sie denken, dass Sie viele Produkte haben Ich werde es so schreiben
【users_controller.rb】
class UsersController < ApplicationController
def show
@products = Product.where(user_id: current_user.id)
end
end
--Nach der veränderung
【users_controller.rb】
def show
@products = User.find(current_user.id)
end
【show.html.erb】
<% @products.each do |product| %>
<p>Produktname:<%= product.name %></p>
<p>Preis:<%= product.price %></p>
<% end %>
--Nach der veränderung
【show.html.erb】
<% @user.products.each do |product| %>(←@user.Produktwechsel)
<p>Produktname:<%= product.name %></p>
<p>Preis:<%= product.price %></p>
<% end %>
Damit sind die Implementierung der Login-Funktion und der grobe Prozess der Rohverarbeitung abgeschlossen. Ich wollte die Implementierung von Bearbeitungs- und Aktualisierungsaktionen, die Flash-Funktion, die Dekoration mit Bootstrap usw. erklären, aber dieses Mal werde ich es hier lassen. Wenn Sie in Zukunft Ihr eigenes Portfolio erstellen und die Anmeldefunktion implementieren, ist es besser, zuerst das Gerät zu implementieren und dann die Rohverarbeitung usw. durchzuführen, damit es weniger wahrscheinlich ist, dass es hängen bleibt. (Ich war so lol) Vielen Dank.
Recommended Posts