No_ideaのわからん日和

✏️...プログラミングが全然出来ない奴がわからんわからん言いながら様々な構文(記述方法やエラー構文など)と奮闘しながら成長していく成長記録です🐢

Ruby on Rails: チャットグループの詳細ページ、編集、削除機能の実装...chapter14

今日やりたいこと

・チャットグループの詳細ページの作成

・チャットグループ編集機能の実装

・チャットグループ削除機能の実装

 

この3つをやろうと思います。

最初にチャットグループの詳細ページを作成します。

 

①チャットグループの詳細ページの作成

1.コントローラーの編集

app/controllers/chat_groups_controller.rb

def show
 @chat_group = ChatGroup.find(params[:id])
end

ChatGroupモデルを使用し、params[:id]を使用しchat_groupsテーブルからidを探してチャットグループ情報を取得。

@を変数につけてインスタンス変数にして@chat_groupに取得したチャットグループ情報を代入。

 

2.詳細ページの作成

app/views/chat_groups/show.html.erbを作成。

https://gyazo.com/08889858d742773eb9528663d6bd8e20

チャットグループの説明

<% if @chat_group.chat_group_description != "" %>

もしchat_groupsテーブルのchat_group_description(グループの説明)カラムが空欄なら。。。

<div class="chat-group-show__description">
 <span class="chat-group-show__description--content">説明:</span>
 <span class="chat-group-show__description--des">
  <%= @chat_group.chat_group_description %>
 </span>
</div>

説明を表示してください。

<% else %>

それ以外なら(説明文がない場合)。。。

<div class="chat-group-show__none">
説明文はありません。
</div>

『説明文はありません。』と表示してください。

<% end %>

if文終了してください。

 

3.詳細ページの確認

/説明文がない場合

//説明文がある場合

 

 

②チャットグループ編集機能の実装

現在一覧ページは↑のようになっています。

メンバーカウント数の横に編集リンクを作りたいと思います。

そして、編集フォームに保存されているグループ名と説明をフォームに表示させるようにしたいと思います。

 

1.編集リンクを作成

一覧ページに編集リンクをつけていきます。

$rails routes

  edit_chat_group GET    /chat_groups/:id/edit(.:format)                                                          chat_groups#edit

app/views/index.html.erb

http://localhost:3000/chat_groups

 

 

2.コントローラーの編集

app/controllers/chat_groups_controller.rb

def edit
 @edit_chat_group = ChatGroup.find(params[:id])
end
 
def update
 update_chat_group = ChatGroup.find(params[:id])
 update_chat_group.update(chat_group_params)
end
 
private
def chat_group_params
 params.require(:chat_group).permit(:chat_group_name, :chat_group_description, user_ids:[])
end

editアクション

先ほどの詳細ページ(showメソッド)と同じ処理。

今回はインスタンス変数を@edit_chat_groupとしました。

 

updateアクション

チャットグループを探し、変数update_chat_groupへ情報を代入。

編集して送られてきた情報をストロングパラメーター(chat_group_paramsメソッド内)にかけている情報だけを通す。

そしてupdateメソッドを使用し、内容を更新してDBへ保存。

 

3.編集ページの作成

app/views/chat_groups/edit.html.erbを作成

https://gyazo.com/07ac61e8b45b19496f41dcaabefefa48

form_withのデフォルトHTTP動詞は'post'なので、methodでpatchを指定。

url

PATCH  /chat_groups/:id(.:format)    chat_groups#update

$rails routesで確認。

url: '/chat_groups/#{@edit_chat_group.id}'

これでupdateアクションへ行けそうです。

チャットグループ一覧ページから[編集]をクリック。

これを編集してみます。

これで編集するボタンをクリックし、一覧ページへ戻ってみると。。。

 

詳細ページ:

大丈夫そうです。

 

 

 

 

③チャットグループ削除機能の実装

最後にチャットグループを削除できるようにしていきます。

 

1.コントローラーを編集

def destroy
 delete_chat_group = ChatGroup.find(params[:id])
 delete_chat_group.destroy
end

チャットグループを探して、destroyメソッドで削除を指示。

2.削除リンクを貼る

 

編集の横に削除パスを貼ります。

 

$rails routes

DELETE /chat_groups/:id(.:format)        chat_groups#destroy

パス先は"/chat_group/#{list.id}"。

3.ビューの編集

app/views/chat_groups/index.html.erb

link_toのデフォルトHTTP動詞は'get'なので methodを使用して'delete'と指定。

4.確認

http://localhost:3000/chat_groups

削除できるかやってみます。

グループ3を削除してみます。

[削除]をクリック

http://localhost:3000/chat_groups

削除できてます。

 

 

 

 

今回は過去の復習でした。

昔だったら時間をかけて作っていたと思いますが、今回はすらすら作成できました😄

 

 

 

 

 

 

 

 

 

以上です。