Spécifiez la version des rails 6.0.0. Spécifiez le DB à utiliser (mysql dans ce cas) après -d.
rails _6.0.0_ new birdtweet -d mysql
changement de réglage.
config/database.yml
...
# encoding: utf8mb4
encoding: utf8
...
Création de DB
cd birdtweet
rails db:create
Édition de Gemfile Ouvrez le Gemfile directement sous le projet
Gemfile
# gem 'mysql2', '>= 0.4.4'
gem 'mysql2', '>= 0.5.3'
........
(Ligne inférieure du fichier)
gem 'pry-rails'
Mettre à jour les paramètres dans le terminal
bundle update
rails g model bird
Ajouter une colonne
db/migrate/2020********create_birds.rb
...
create_table :birds do |t|
t.string :name
t.text :pic
t.timestamps
end
...
Mettez à jour les modifications avec des commandes!
rails db:migrate
Mettez quelques données dans la base de données sur la console.
rails c
Bird.create(name: "Tsunomedori", pic: "https://cdn.pixabay.com/photo/2020/05/26/13/22/puffins-5223057_1280.jpg ")
Bird.create(name: "Kawasemi", pic: "https://cdn.pixabay.com/photo/2017/02/07/16/47/kingfisher-2046453_1280.jpg ")
exit
rails g controller birds
Il peut ou non être au pluriel, et cela peut prêter à confusion, Seul le modèle est singulier!
Ajouté à routes.rb ↓ Ajout de liens vers chaque fonction dans index.html.erb (index inattendu) ↓ Ajouté à birds_controller.rb ↓ Créez la fonction name.html.erb
Si vous ne souhaitez pas utiliser toutes les fonctions, spécifiez uniquement celles à utiliser avec la seule option.
config/routes.rb
#Derrière les ressources se trouve le pluriel du nom du modèle
resources :birds, only: :index
app/controllers/birds_controller.rb
...
def index
#Stockez les données du modèle Bird dans des variables d'instance.
@birds = Bird.all
end
...
création de fichier index.html.erb Affichez toutes les variables d'instance dans la vue à l'aide de la méthode each.
rb:app/views/birds/index.html.erb
<% @birds.each do |bird| %>
<%= bird.name %>
<div style=
"background-image: url(<%= bird.pic %>);
background-position: center center;
background-size: cover;
width: 300px;
height: 300px;
margin-bottom: 10px;
">
</div>
<%end%>
Il était affiché comme ci-dessous! !! !!
routes.rb
Rails.application.routes.draw do
#Derrière les ressources se trouve le pluriel du nom du modèle
#S'il y a plusieurs actions, je les ferai sous la forme d'un tableau
resources :birds, only: [:index, :new]
end
ruby:index.html.erb
<%=link_to 'Nouveau poste', new_bird_path, method: :get%>
...
birds_controller.rb
...
def new
#Stockez l'instanciation du modèle Bird dans une variable d'instance.
@bird = Bird.new
end
...
Créer new.html.erb
rb:app/views/birds/new.html.erb
<%#Même si vous ne décrivez pas l'URL de destination de la transition, elle effectuera la transition en fonction du modèle placé dans la variable d'instance.%>
<%=form_with(model: @bird, local: true) do |form| %>
<%= form.text_field :name, placeholder: "Nom de l'oiseau" %>
<%= form.text_field :pic, placeholder: "URL de la photo d'oiseau" %>
<%= form.submit "Publier" %>
<%end%>
http://localhost:3000/birds/new Vous pouvez voir l'écran de publication lorsque vous accédez!
Vient ensuite la fonction d'enregistrement des informations d'entrée.
routes.rb
Rails.application.routes.draw do
#Derrière les ressources se trouve le pluriel du nom du modèle
#S'il y a plusieurs actions, je les ferai sous la forme d'un tableau
resources :birds, only: [:index, :new, :create]
end
birds_controller.rb
Les données sont envoyées sous la forme d'un hachage à partir du formulaire.
Il est dangereux de recevoir toutes les données! </ b>
Vous n'avez besoin que du nom et de l'URL de la photo, mais la clé des informations de connexion est ajoutée de manière malveillante, et il est possible de modifier les informations de connexion d'une autre personne et de prendre le relais.
Par conséquent, utilisez le paramètre strong.
De plus, sous la ligne qui décrit le privé, c'est une méthode qui ne peut pas être appelée à partir d'autres fichiers. L'avantage est que vous pouvez voir moins de fichiers lorsque vous avez plus de méthodes.
birds_controller.rb
...
def create
#oiseau défini sous privé_Reçoit et enregistre les paramètres spécifiés par param.
Bird.create(bird_param)
end
private
def bird_param
# params.require(:Nom du modèle).permit(:Nom de colonne,:Nom de colonne,......)
params.require(:bird).permit(:name, :pic)
end
...
create.html.erb créer
rb:app/views/birds/create.html.erb
<h3>Publication terminée!</h3>
<a href="/birds">Lister</a>
Si vous le laissez tel quel, vous pourrez vous inscrire sans rien saisir. Par conséquent, j'écrirai une description pour le contrôle de validation.
app/models/birds.rb
class Bird < ApplicationRecord
#Écrivez le nom de la colonne que vous souhaitez être obligé de saisir.
validates :name, presence: true
validates :pic, presence: true
end
Vous ne pouvez plus enregistrer les données à partir de maintenant! !!
routes.rb
...
resources :birds, only: [:index, :new, :create, :destroy]
...
Pour trouver le lien vers la fonction de suppression, utilisez d'abord la commande
rails routes
ça ira. Ensuite, la sortie suivante sera sortie. Si vous ajoutez "_path" à la valeur Prefix, l'URL décrite dans l'URI sera sortie.
Cette fois, il est supprimé, alors faites attention à la ligne qui dit DELETE in Verb. Le préfixe est "bird", vous pouvez donc le définir sur "bird_path". La méthode est "DELETE" dans "Verb", vous pouvez donc simplement dire "supprimer". Après cela, transmettez également l'identifiant!
index.html.erb
...
<%= bird.name %><%=link_to "Effacer", bird_path(bird.id), method: :delete%>
...
Le lien s'affiche.
bird_controller.rb
...
def destroy
#Cette fois, je n'enverrai nulle part les données extraites, donc@N'attachez pas.
bird = Bird.find(params[:id])
bird.destroy
end
...
destroy.html.erb
<a href="/birds">Écran de liste</a>
Macareux moine a été supprimé correctement!
Recommended Posts