Rails CRUD 기능 설치 ①(이번에는 추가, 삭제)

12096 단어 RubyRails

이 문장의 목적


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개의 동작이 있다.
  • index: 일람
  • Show: 상세
  • new: 새 화면으로 이동
  • create: 새 데이터 저장
  • edit: 편집 화면으로의 전환
  • 업데이트: 편집 내용의 업데이트
  • destroy: 삭제
  • 모든 기능을 사용하지 않으면 only 옵션에서 사용하는 기능만 지정합니다.
    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.rb
    Rails.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.rb
    Rails.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.rb
    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>
    


    하나의 목표가 잘 삭제되었다!

    좋은 웹페이지 즐겨찾기