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

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

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

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

2199閲覧

Ruby on Rails メッセージ機能でラインのようなデザイン

riamk

総合スコア47

Ruby

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2017/03/27 17:14

###前提・実現したいこと
rails4 ローカル環境

現在メッセージ機能を実装してラインのようなメッセージのやりとりができるようにしたいと思っています。

###発生している問題・エラーメッセージ
メッセージ機能は無事に実装できたのですが、メッセージのやり取りをしているページで『相手のメッセージは左側』『自分のメッセージは右側』という表示の仕方が分からず苦戦しています。

どのようにしたら相手のメッセージと自分のメッセージを区別して表示できるのでしょうか?

###該当のソースコード
現在はこのように記述しています。

messages.index.html.erb

1 <div class="ui segment"> 2 <% @messages.each do |message| %> 3 <% if message.body %> 4 <% user = User.find(message.user_id) %> 5 <strong><%= user.name %></strong> 6 <%= message.message_time %> 7 <div class="item"> 8 <i class="right triangle icon"></i> 9 <%= message.body %> 10 </div> 11 <% end %> 12 <% end %> 13 </div>

相手と自分のメッセージを上記記述で表示して、正常に表示はできているのですが、これでは一覧になってメッセージのやり取りが表示されているだけで、『相手のメッセージは左側』『自分のメッセージは右側』という理想の表示にはできません。

どのように記述したらいいか教えてください。

他に必要なコードがあれば追記しますので、その際はお声がけください。
よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんな感じでしょうか。

erb

1<% if message.user_id == [自分のID] %> 2 <!-- 自分のメッセージ --> 3 <% user = User.find(message.user_id) %> 4 <strong><%= user.name %></strong> 5 <%= message.message_time %> 6 <div class="item"> 7 <i class="right triangle icon"></i> 8 <%= message.body %> 9 </div> 10<% else %> 11 <!-- 相手のメッセージ --> 12<% end %>

投稿2017/03/28 04:19

KaiShoya

総合スコア551

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

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

riamk

2017/03/28 04:42

ご回答ありがとうございます。 教えて頂いたコードでさっそく試してみました。 <% if message.user_id == [自分のID] %> こちらは<% if message.user_id == current_user.id %> と自分のIDを入れてやりました。 すると undefined local variable or method `message' とエラーになってしまったので、 <% if @message.user_id == current_user.id %> としてみたのですが、メッセージが1件も表示されない状態です。 どのように修正したらいいかアドバイス頂けると嬉しいです。
KaiShoya

2017/03/28 04:46

下記の部分ではmessage.user_idが取得できているようなので、if文を書くところが間違っているのではないでしょうか。 <% user = User.find(message.user_id) %>
riamk

2017/03/28 05:01

ありがとうございます。 if文のところが間違っていたようで無事に解決できました。 私はもっと複雑に考えて表示させようとしてしまっていたので、思っていたよりもシンプルに記述できるんだなと勉強になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問