#実装機能
・ログアウト状態でも投稿詳細ページを見ることができる。
・投稿者にしか投稿の情報編集、削除のリンクが踏めないようになっている。
##ログアウト状態でも投稿詳細ページを見ることができる。
config/routes.rbにshowを追加していく。
Rails.application.routes.draw do
root to: 'posts#index'
resources :posts, only: [:new, :create, :show]
end
ターミナルでrails routes で表示させたいパスを確認していく。
Prefix Verb URI Pattern Controller#Action
root GET / posts#index
posts POST /posts(.:format) posts#create
new_post GET /posts/new(.:format) posts#new
post GET /posts/:id(.:format) posts#show
showアクションをコントローラーで設定していく。
app/controllers/posts_controller.rb
def show
@post = Post.find(params[:id])
end
showファイル作成(ビュー)をコントローラーと同じ名前のpostフォルダ内に作成したあと、中身を記述
show.html.erb
<div class="postTitle">
<%= @post.title %>
</div>
<div class="postText">
<%= simple_format @post.content %>
</div>
*simple_formatメソッドは投稿時に改行を含むデータを送信したときに、その改行を反映してくれる役割です。
index.html.erb下記を記述していく。(トップページから詳細ページに遷移させるために記述)
<div>
<%= link_to post.title, post_path(post.id) %>
</div>
###<ここまでの実装>
リンク先を踏んで詳細を表示することができる。
##投稿者のみ投稿の情報編集、削除のリンクが踏めるようにしていく。(gemのdeviseが必要になります。)
Showファイル変更する。(ログインしているかつログインuserと投稿userが一致)している時のみ表示
app/views/posts/show.html.erb
<div>
<%= @post.title %>
</div>
<% if user_signed_in? && current_user.id == @post.user_id %>
<div>
<%= link_to "編集", edit_post_path(@post.id) %>
<%= link_to "削除", post_path(@post.id), method: :delete %>
</div>
<% end %>
<div>
<%= simple_format @post.content %>
</div>
これでLoginUserかつLoginUserと投稿Userが一致の時のみ表示できるようになる。
<補足>
論理演算子を調べると様々な条件をつけることが出来る。
感想
初めて書いた記事です、意味不明な箇所は徐々に直していきます。