[Ruby on rails][showアクション]登録レコードの個別ページ表示。投稿の詳細ページ的なものを作る
たとえば、ユーザーがつぶやきを登録するアプリがあるとして。
そのつぶやき1件1件の単体の詳細ページを作りたいというとき。
考え方は、usrのマイページをshowアクションで作るのと同じ。
まず[showアクション]ルーティング
config/routes.rb
Rails.application.routes.draw do devise_for :users root 'tweets#index' get 'tweets/new' => 'tweets#new' post 'tweets' => 'tweets#create' get 'users/:id' => 'users#show' delete 'tweets/:id' => 'tweets#destroy' get 'tweets/:id/edit' => 'tweets#edit' patch 'tweets/:id' => 'tweets#update' get 'tweets/:id' => 'tweets#show' ←#ここ!!ツイート詳細画面 end
次にコントローラ
app/controllers/tweets_controller.rb
def show @tweet = Tweet.find(params[:id]) end
paramsのtweet自身のidで、詳細表示したい対象ツイートを見つけて格納。
showアクションのviewを作る。
app/views/tweets/show.html.erb
<% if user_signed_in? && current_user.id == @tweet.user_id %> もしログイン状態で現ユーザーidとツイートのユーザidが同じなら <%= link_to '編集', "/tweets/#{@tweet.id}/edit", method: :get %> ツイート編集ボタン <%= link_to '削除', "/tweets/#{@tweet.id}", method: :delete %> ツイート削除 <% end %> <%= simple_format(@tweet.text) %>
このツイート詳細画面へのリンクを作る
views/tweets/xxxxxx.html.erb
<ul class="more_list"> <li> <%= link_to '詳細', "/tweets/#{tweet.id}", method: :get %> ←ここ!! </li> <% if user_signed_in? && current_user.id == tweet.user_id %> <li> <%= link_to '編集', "/tweets/#{tweet.id}/edit", method: :get %> </li> <li> <%= link_to '削除', "/tweets/#{tweet.id}", method: :delete %> </li> <% end %> </ul>