Rails CRUD 기능 설치 ①(이번에는 추가, 삭제)
이 문장의 목적
rails를 사용하여 CRUD 기능을 갖춘 웹 응용 프로그램의 제작 절차를 설명합니다.새의 사진과 이름을 투고할 수 있는 사이트입니다.
rails 응용 프로그램 만들기
rails의 버전 6.0.0을 지정합니다. -d 뒤에 사용할 DB를 지정합니다. (이번에는 mysql)rails _6.0.0_ new birdtweet -d mysql
설정을 변경합니다.
config/database.yml...
# encoding: utf8mb4
encoding: utf8
...
DB 생성cd birdtweet
rails db:create
Gemfile 편집
항목 바로 아래에 있는 Gemfile 열기
Gemfile# gem 'mysql2', '>= 0.4.4'
gem 'mysql2', '>= 0.5.3'
........
(ファイル最下行)
gem 'pry-rails'
터미널에서 구성 업데이트bundle update
모델 만들기
단말기rails g model bird
열 추가
db/migrate/2020********create_birds.rb...
create_table :birds do |t|
t.string :name
t.text :pic
t.timestamps
end
...
명령 업데이트 수정 내용!rails db:migrate
콘솔을 사용하여 DB에 몇 개의 데이터를 넣다.rails c
Bird.create(name: "ツノメドリ", pic: "https://cdn.pixabay.com/photo/2020/05/26/13/22/puffins-5223057_1280.jpg")
Bird.create(name: "カワセミ", pic: "https://cdn.pixabay.com/photo/2017/02/07/16/47/kingfisher-2046453_1280.jpg")
exit
컨트롤러 만들기
다음 명령을 사용하여 컨트롤러를 만듭니다.rails g controller birds
여러 형태가 생기거나, 안 하거나 혼란스러운 상황이 오겠지만
모델만 홀수형!
이로부터 오는 강
각 기능이 만들어진 절차는 대체로 같다!
routes.rb에 추기
↓
index.html.eb에 각 기능을 추적하는 링크 (index 의외)
↓
birds_controller.rb에 추기
↓
기능 이름입니다.html.erb 작성
목록 표시 기능
rails에는 7개의 동작이 있다.
rails의 버전 6.0.0을 지정합니다. -d 뒤에 사용할 DB를 지정합니다. (이번에는 mysql)
rails _6.0.0_ new birdtweet -d mysql
설정을 변경합니다.config/database.yml
...
# encoding: utf8mb4
encoding: utf8
...
DB 생성cd birdtweet
rails db:create
Gemfile 편집항목 바로 아래에 있는 Gemfile 열기
Gemfile
# gem 'mysql2', '>= 0.4.4'
gem 'mysql2', '>= 0.5.3'
........
(ファイル最下行)
gem 'pry-rails'
터미널에서 구성 업데이트bundle update
모델 만들기
단말기rails g model bird
열 추가
db/migrate/2020********create_birds.rb...
create_table :birds do |t|
t.string :name
t.text :pic
t.timestamps
end
...
명령 업데이트 수정 내용!rails db:migrate
콘솔을 사용하여 DB에 몇 개의 데이터를 넣다.rails c
Bird.create(name: "ツノメドリ", pic: "https://cdn.pixabay.com/photo/2020/05/26/13/22/puffins-5223057_1280.jpg")
Bird.create(name: "カワセミ", pic: "https://cdn.pixabay.com/photo/2017/02/07/16/47/kingfisher-2046453_1280.jpg")
exit
컨트롤러 만들기
다음 명령을 사용하여 컨트롤러를 만듭니다.rails g controller birds
여러 형태가 생기거나, 안 하거나 혼란스러운 상황이 오겠지만
모델만 홀수형!
이로부터 오는 강
각 기능이 만들어진 절차는 대체로 같다!
routes.rb에 추기
↓
index.html.eb에 각 기능을 추적하는 링크 (index 의외)
↓
birds_controller.rb에 추기
↓
기능 이름입니다.html.erb 작성
목록 표시 기능
rails에는 7개의 동작이 있다.
rails g model bird
...
create_table :birds do |t|
t.string :name
t.text :pic
t.timestamps
end
...
rails db:migrate
rails c
Bird.create(name: "ツノメドリ", pic: "https://cdn.pixabay.com/photo/2020/05/26/13/22/puffins-5223057_1280.jpg")
Bird.create(name: "カワセミ", pic: "https://cdn.pixabay.com/photo/2017/02/07/16/47/kingfisher-2046453_1280.jpg")
exit
다음 명령을 사용하여 컨트롤러를 만듭니다.
rails g controller birds
여러 형태가 생기거나, 안 하거나 혼란스러운 상황이 오겠지만모델만 홀수형!
이로부터 오는 강
각 기능이 만들어진 절차는 대체로 같다!
routes.rb에 추기
↓
index.html.eb에 각 기능을 추적하는 링크 (index 의외)
↓
birds_controller.rb에 추기
↓
기능 이름입니다.html.erb 작성
목록 표시 기능
rails에는 7개의 동작이 있다.
rails에는 7개의 동작이 있다.
config/routes.rb
# resourcesの後ろは、モデル名の複数形
resources :birds, only: :index
app/controllers/birds_controller.rb...
def index
# インスタンス変数にBirdモデルのデータを格納します。
@birds = Bird.all
end
...
index.html.erb 파일 만들기보기에서 each 방법을 사용하여 모든 실례 변수를 표시합니다.
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%>
아래와 같이 표시됩니다!!!새 발언 기능
프로세스가 같습니다.routes→controller→view이지만 투고화면으로 이동(new)하는 데이터 추가(create)이기 때문에 두 번 일련의 프로세스를 진행합니다!
routes.rbRails.application.routes.draw do
# resourcesの後ろは、モデル名の複数形
# アクションが複数あるときは、配列の形にしてあげます
resources :birds, only: [:index, :new]
end
index.html.erb<%=link_to '新規投稿', new_bird_path, method: :get%>
...
birds_controller.rb...
def new
# Birdモデルのインスタンス化したものを、インスタンス変数に格納します。
@bird = Bird.new
end
...
new.html.erb 작성
app/views/birds/new.html.erb<%# 遷移先urlを記載しなくても、インスタンス変数に入れたモデルから判断して、遷移してくれます %>
<%=form_with(model: @bird, local: true) do |form| %>
<%= form.text_field :name, placeholder: "鳥の名前" %>
<%= form.text_field :pic, placeholder: "鳥の写真のURL" %>
<%= form.submit "投稿" %>
<%end%>
http://localhost:3000/birds/new
"% 1"을 누르면 투고 화면을 볼 수 있습니다!
다음은 입력 정보를 등록하는 기능입니다.
routes.rbRails.application.routes.draw do
# resourcesの後ろは、モデル名の複数形
# アクションが複数あるときは、配列の形にしてあげます
resources :birds, only: [:index, :new, :create]
end
birds_controller.rb
form의 산열 형식으로 데이터를 보내다.모든 데이터를 받는 것은 매우 위험하다!
이름과 사진의 URL만 있으면 되는데 악의적으로 로그인 정보를 추가한 키 때문에 타인의 로그인 정보를 무단으로 변경하고 빼돌릴 수 있다.
따라서 플래시 파라미터를 사용한다.또한 privete를 기술한 줄 이하에서는 다른 파일에서 호출할 수 없는 방법입니다.방법이 늘어날 때는 봐야 할 서류를 줄이는 장점이 있다.
birds_controller.rb...
def create
# private下に定義したbird_paramで指定したパラメータを受け取り、保存する。
Bird.create(bird_param)
end
private
def bird_param
# params.require(:モデル名).permit(:カラム名,:カラム名,......)
params.require(:bird).permit(:name, :pic)
end
...
create.html.erb 작성
app/views/birds/create.html.erb<h3>投稿完了!</h3>
<a href="/birds">一覧へ</a>
지금 이렇게 되면 아무것도 입력하지 않고 등록할 수 있다.나는 그곳에서 검증 검증을 확인하는 기술을 했다.
app/models/birds.rbclass Bird < ApplicationRecord
# 入力必須にしたいカラム名を書きます。
validates :name, presence: true
validates :pic, presence: true
end
앞으로의 데이터는 로그인할 수 없습니다!!
삭제 기능
routes.rb...
resources :birds, only: [:index, :new, :create, :destroy]
...
삭제 기능에서 링크를 찾는 방법은 명령을 사용하십시오rails routes
.
그런 다음 다음 다음을 내보냅니다.
Prefix 값에 path 를 추가하면 URI에 기재된 URL이 출력됩니다.
이번에는 삭제되었으므로 Verb에 Delete라고 적힌 줄을 주의하십시오.Prefix는 "bird"이기 때문에 "bird path"만 있으면 됩니다.방법은'Verb'에'DELETE'가 있기 때문에'delete'를 사용하면 된다.그리고 아이디도 드릴게요!
index.html.erb...
<%= bird.name %><%=link_to "削除", bird_path(bird.id), method: :delete%>
...
링크를 표시합니다.
bird_controller.rb...
def destroy
# 今回は抽出したデータをどこにも送らないので、@をつけません。
bird = Bird.find(params[:id])
bird.destroy
end
...
destroy.html.erb<a href="/birds">一覧画面</a>
하나의 목표가 잘 삭제되었다!
Reference
이 문제에 관하여(Rails CRUD 기능 설치 ①(이번에는 추가, 삭제)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/smbbc20/items/f616f7f9aa243d19af26
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Rails.application.routes.draw do
# resourcesの後ろは、モデル名の複数形
# アクションが複数あるときは、配列の形にしてあげます
resources :birds, only: [:index, :new]
end
<%=link_to '新規投稿', new_bird_path, method: :get%>
...
...
def new
# Birdモデルのインスタンス化したものを、インスタンス変数に格納します。
@bird = Bird.new
end
...
<%# 遷移先urlを記載しなくても、インスタンス変数に入れたモデルから判断して、遷移してくれます %>
<%=form_with(model: @bird, local: true) do |form| %>
<%= form.text_field :name, placeholder: "鳥の名前" %>
<%= form.text_field :pic, placeholder: "鳥の写真のURL" %>
<%= form.submit "投稿" %>
<%end%>
Rails.application.routes.draw do
# resourcesの後ろは、モデル名の複数形
# アクションが複数あるときは、配列の形にしてあげます
resources :birds, only: [:index, :new, :create]
end
...
def create
# private下に定義したbird_paramで指定したパラメータを受け取り、保存する。
Bird.create(bird_param)
end
private
def bird_param
# params.require(:モデル名).permit(:カラム名,:カラム名,......)
params.require(:bird).permit(:name, :pic)
end
...
<h3>投稿完了!</h3>
<a href="/birds">一覧へ</a>
class Bird < ApplicationRecord
# 入力必須にしたいカラム名を書きます。
validates :name, presence: true
validates :pic, presence: true
end
routes.rb
...
resources :birds, only: [:index, :new, :create, :destroy]
...
삭제 기능에서 링크를 찾는 방법은 명령을 사용하십시오rails routes
.그런 다음 다음 다음을 내보냅니다.
Prefix 값에 path 를 추가하면 URI에 기재된 URL이 출력됩니다.
이번에는 삭제되었으므로 Verb에 Delete라고 적힌 줄을 주의하십시오.Prefix는 "bird"이기 때문에 "bird path"만 있으면 됩니다.방법은'Verb'에'DELETE'가 있기 때문에'delete'를 사용하면 된다.그리고 아이디도 드릴게요!
index.html.erb
...
<%= bird.name %><%=link_to "削除", bird_path(bird.id), method: :delete%>
...
링크를 표시합니다.bird_controller.rb
...
def destroy
# 今回は抽出したデータをどこにも送らないので、@をつけません。
bird = Bird.find(params[:id])
bird.destroy
end
...
destroy.html.erb<a href="/birds">一覧画面</a>
하나의 목표가 잘 삭제되었다!
Reference
이 문제에 관하여(Rails CRUD 기능 설치 ①(이번에는 추가, 삭제)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/smbbc20/items/f616f7f9aa243d19af26텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)