0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

投稿アプリ詳細表示機能 同じコードをまとめる

Posted at

今回もテックキャンプのカリキュラムの復習です!

目的

  • showアクションの処理の理解
  • before_actionを理解

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

詳細画面のパスは、削除や編集と同じくツイートごとに管理
idが1のツイート詳細画面は、/tweets/1パス

config/routes.rb

resources :tweets, only: [:show]

もし、7つのアクションがある場合

変更前
resources :tweets, only: [:index, :new, :create, :destroy, :edit, :update, :show]
変更後
resources :tweets

rails routesを実行
ターミナル
weet GET /tweets/:id(.:format) tweets#show

詳細ボタンを投稿一覧に追加

app/views/tweets/index.html.erb

<%= link_to '詳細'、tweet_path(tweet.id) %>

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

  • データベースから所得するため
    showアクションでは、詳細を表示したいツイートの情報をビューに受け渡すだけ
    controllers/tweets_controller.rb
  def show
    @tweet = Tweet.find(params[:id])
  end

app/views/tweets ディレクトリの中に show.html.erb作成

app/views/tweets/show.html.erb

<div class="contents row">
  <div class="content_post" style="background-image: url(<%= @tweet.image %>);">
    <div class="more">
      <span><%= image_tag 'arrow_top.png' %></span>
      <ul class="more_list">
        <li>
          <%= link_to '編集', edit_tweet_path(@tweet.id) %>
        </li>
        <li>
          <%= link_to '削除', tweet_path(@tweet.id), data: { turbo_method: :delete } %>
        </li>
      </ul>
    </div>
    <p><%= @tweet.text %></p>
    <span class="name"><%= @tweet.name %>
    </span>
  </div>
</div>

ツイートが1つしか表示されないような画面に遷移される
URLにtweetのidに含まれる

同じコードをメソッドにまとめる

before_actionメソッド

コントローラーで定義されたアクションが実行される前に、共通の処理を行うことができる

例)
before_action :処理させたいメソッド名

onlyオプション

resourcesと同様に onlyexceptなどのアプションを使用することによって、
どのアクションの実行前に、処理を実行させるか などの制限が可能

app/controllers/tweets_controller.rb

class TweetsController < ApplicationController
    before_action set_tweet, only: [:edit, :show]

この記述により
edit,showアクションが実行される前に、set_tweetに定義されている処理が実行されるようになる

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?