0
1

ツイートを編集

Posted at

投稿機能アプリの実装の復習を備忘録としてあげてます!

目的

  • CRUD(UPDATE)
  • HTTPメソッドのPATCH
  • edit アクションの処理の理解
  • updateアクションの処理の理解

ツイート編集機能の実装

 1. ツイート編集画面のルーティング設定
 2. 編集ボタン編集ボタンをビューに追加
 3. editアクションをコントローラーに定義
 4. 編集画面のビューファイルを作成
 5. ツイートの更新を行うためのルーティングを設定
 6. updateアクションをコントローラーに定義

「editアクションで編集ページを「表示」→「updateアクションでデータの更新」

edit アクションのルーティング設定

config/routes.rb

〜略〜
resource :tweets, only: [:edit]
〜略〜

ターミナルで
rails routesコマンドで確認
ターミナル
edit_tweet GET /tweets/:id/edit(.:format) tweets#edit

編集ボタンを投稿一覧に追加

link_toメソッドを使用する
遷移先がツイートごとに異なるため、
編集画面へ遷移するパスには、 tweetのid をパラメータ設定する

app/views/tweets/index.html.erb

~~
<%= link_to '編集', edit_tweet_path(tweet.id) %>
~略~

editアクションをコントローラーに定義

編集→更新は すでに存在しているレコードを選択して中身を書き換える 
編集したいレコードを  @tweet に代入し、ビューに受け渡すことで編集画面で利用できる

app/controllers/tweets_controller.rb

~~
def edit
    @tweet = Tweet.find(params[:id])
end
~~

編集画面をビューに作成

情報を入力するために必要
入力情報の送信先は/tweets/編集するツイートのid
編集の際は HTTPメソッドのPATCHを使用

HTTPメソッド
GET: サーバーからブラウザに情報を返す
POST: ブラウザからサーバーに情報を送信し、サーバーに情報を保存
DELETE: ブラウザからサーバーに情報を送信し、サーバーの情報を削除する
PATCH: ブラウザからサーバーに情報を送信し、サーバー内に情報を置き換える

app/views/tweets ディレクトリの中にedit.html.erbというビューファイルを作成

app/views/tweets/edit.html.erb

<div class="contents row">
  <div class="container">
    <h3>編集する</h3>
    <%= form_with(model: @tweet, local: true) do |form| %>
      <%= form.text_field :name, placeholder: "Nickname" %>
      <%= form.text_field :image, placeholder: "Image Url" %>
      <%= form.text_area :text, placeholder: "text", rows: "10" %>
      <%= form.submit "SEND" %>
    <% end %>
  </div>
</div>

ツイート更新処理の実装

updatアクションのルーティング設定

config/routes.rb

resources :tweets, only: [:index, :new, :create, :destroy, :edit, :update]

ターミナル
tweet PATCH /tweets/:id(.:format) tweets#update

updateアクションをコントローラーに定義

app/controllers/tweets_controller.rb

  def update
    tweet = Tweet.find(params[:id])
    tweet.update(tweet_params)
    redidect_to root_path
  end
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1