혼잣말 앱 만들기 ⑤

5627 단어 Rails
이번 제작 삭제 기능.
혼잣말 삭제를 위해destroy 동작을 사용합니다.

라우팅 구성


config/routes.rb
Rails.application.routes.draw do
  root to: 'tweets#index'
  resources :tweets, only: [:index, :new, :create, :destroy]
end

뷰에 링크 추가


그리고 link_to 방법으로 삭제 단추를 추가하세요.
삭제할 트위터를 구분하기 위해 경로는 트위터의 id를 매개 변수로 합니다.
/tweets/'트윗의 id'를 통해 매개 변수로 수신할 수 있습니다.
HTTP 메서드는 DELETE를 지정합니다.
Prefix를 사용하여 경로를 지정하는 방법을 살펴보겠습니다.

Prefix


경로의 URI Pattern 이름을 변수로 지정합니다.
URI Pattern 대신 Prefix를 사용하여 경로를 나타낼 수 있습니다.

삭제할 destroy 작업에 대응하는 Prefix는 tweet입니다.
트윗이라는 Prefix라서 트윗_경로와 경로를 지정합니다.
HTTP 메서드는 DELETE입니다.
URI Pattern은 트위터의 ID(tweet.id)를 포함하기 위해 "/tweets/#{tweet.id}"라고 설명합니다.
Prefix를 사용할 때 tweet_path(tweet.id)와 같은 Prefix 매개 변수로 전달합니다.
#URI Patternの場合
<%= link_to '削除', "/tweets/#{tweet.id}", method: :delete %>

#Prefixの場合
<%= link_to '削除', tweet_path(tweet.id), method: :delete %>

다음은 컨트롤러를 위한 동작을 정의합니다.


삭제하려면 트위터 컨트롤러에서destroy 동작을 정의하십시오.
어떤 트위터를 삭제할지 확인하려면params[:id]를 사용하여 삭제할 트위터의 정보를 얻으십시오.
이때 params[:id]는 Prefix에서 지정한 tweet_path(tweet.id)의 트윗입니다.id에 해당하는 숫자를 입력하십시오.
app/controllers/tweets_controller.rb
class TweetsController < ApplicationController

  def index
    @tweets = Tweet.all
  end

  def new
    @tweet = Tweet.new
  end

  def create
    Tweet.create(tweet_params)
  end

  def destroy                              #destroyアクション追加
    tweet = Tweet.find(params[:id])
    tweet.destroy
  end

  private
  def tweet_params
    params.require(:tweet).permit(:name,:text,:image)
  end

end
절차를 설명하자면
동적 입력 프롬프트에서 클릭
find 방법으로 트위터를 가져오고destroy 방법으로 삭제합니다.

뷰를 작성하고 다음 코드를 입력합니다.


app/views/tweets/destroy.html.erb
<div class="contents row">
  <div class="success">
    <h3>削除が完了しました。</h3>
    <a class="btn" href="/">投稿一覧へ戻る</a>
  </div>
</div>
동작을 확인해 보세요.아래와 같이 성공이다.

좋은 웹페이지 즐겨찾기