[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>



