0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

投稿したコメントに機能を追加させる。(自分用メモになっているかもしれない)

Posted at

#実装機能
・ログアウト状態でも投稿詳細ページを見ることができる。
・投稿者にしか投稿の情報編集、削除のリンクが踏めないようになっている。


##ログアウト状態でも投稿詳細ページを見ることができる。

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が一致の時のみ表示できるようになる。
<補足>
論理演算子を調べると様々な条件をつけることが出来る。

感想
初めて書いた記事です、意味不明な箇所は徐々に直していきます。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?