質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

672閲覧

【Rails】チャット画面などの条件分岐について

hatori_r

総合スコア10

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/07/13 06:59

チャットの条件分岐について

チャットアプリのLINEなどのように自分の文字は右側に出力し、相手の文字は左側に出力することは出来ますでしょうか?

試したこと

ネットなどで調べてみると

Haml

1- if (自分か相手かを判断するための記述) 2 (自分の投稿) 3- else 4 (相手の投稿)

恐らくこの記述を用いることで実現できるかと思うのですが、肝心の(自分か相手かを判断するための記述)にどのように記述すればうまく左右に分かれるのかがわかりません。
何方か教えていただけないでしょうか?

補足情報(FW/ツールのバージョンなど)

Rails 5.2.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

表示するmodelに誰の作成かを示すcolumnがあるとおもいます。
大抵は user_id
それで判断してください。

投稿2020/07/13 07:49

winterboum

総合スコア23284

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatori_r

2020/07/13 07:57

winterboum様 回答いただきありがとうございます。 いただいた情報をもとに作業を行ってみます。
hatori_r

2020/07/13 09:38

winterboum様 1つのテーブルの話であれば、たしかに教えていただいた方法でできるかと思います。 例えば1つの投稿(例えばツイートとします。)にあるコメント欄にコメントをした場合少し状況が変わると思います。 この場合、 「投稿した人 と コメントした人」が一緒だった場合 → その人 「投稿した人 と コメントした人」が異なる場合 → 他のユーザー この様になると思います。 この記述がしたいのですが、うまく実現することが出来ません。 私の分かる範囲で「userid == twitte.id」 のように記述したところうまく言ったと思いきや、何個も投稿していくとおかしくなっていきます。 コメントした人のidと投稿した人のidを連携させればよいのでしょうか?
winterboum

2020/07/13 10:04

??? どのテーブルのデータを載せるにせよ、その作者が私なのか違うのかで判断すればよいかと で 「投稿した人 と コメントした人」が一緒だった場合 → その人 ではなく 「投稿した人 と ログインしている人」が一緒だった場合 → その人 「コメントした人 と ログインしている人」が一緒だった場合 → その人 では?
hatori_r

2020/07/13 16:40

ご指摘ありがとうございます。 うまく説明ができなくてすみません。 一つの投稿があって、それはAさんが投稿したとします。 そしてその投稿にはコメントをすることができるのですが、もしAさん自身がコメントをしたら「投稿した人 = コメントした人」ということで、Aさんの投稿に他の人がコメントした場合は、「投稿した人 = コメントした人」ではないと言うことが伝えたかったのです。
winterboum

2020/07/13 22:23

はいそれはわかります。というか自明。 いまhatoriさんが困っているのは、 if (自分か相手かを判断するための記述) ですよね? ですから、 投稿を表示するとき なら投稿した人、 コメントを表示するとならコメントした人 いずれにしても多分 user_idがありません?
hatori_r

2020/07/15 04:10

仰るとおりです。 user.idを認識できないとその人が投稿した人なのか、否かを判断できないと思います。 よって @twitte.user_id == @comment.user_id この記述によって上記の判断ができるのかと思います。
winterboum

2020/07/15 06:57

それですと、「私」が投稿した時と、誰かの投稿に「私」がコメントした時で、「私」のが右に行ったり左にいったりになりますが、それが望み?
hatori_r

2020/07/15 08:06

はい、そのとおりでございます。
winterboum

2020/07/15 10:27

でしたらばそれが条件でよいですね ただ、@twitte @comment で良いかどうかは、view と それを呼ぶ controllerのcodeがないと私は判断できませんが。
hatori_r

2020/07/15 11:22

winterboum様 色々教えていただきありがとうございます。 インスタンス変数に関しては仰る通りでコントローラーで何を定義しているかによって変わると思います。
guest

0

  • 解説用
- if 投稿のインスタンス変数.user_id == コメントのインスタンス変数.user_id
  • 例(twitte)
- if @twitte.user_id == comment.user_id

これで出来たかと思います。

投稿2020/07/13 09:49

編集2020/07/13 09:51
hatori_r

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問