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

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

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

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

Ruby on Rails 4

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

CSS

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

Q&A

解決済

1回答

2980閲覧

Ruby on Rails メッセージ機能でのデザインCSSに関して

riamk

総合スコア47

Ruby

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

Ruby on Rails 4

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

CSS

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

0グッド

0クリップ

投稿2017/03/28 14:27

編集2017/03/29 02:27

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

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

###発生している問題・エラーメッセージ
メッセージ機能は無事に実装できて、メッセージのやり取りをしているページで『相手のメッセージは左側』『自分のメッセージは右側』という表示にして吹き出しをつけて表示しようと思っています。

吹き出しもCSSで実装したのですが、吹き出しをつけると下記の画像のように空の吹き出しが1つ勝手に表示されてしまいます。

イメージ説明

原因が分からず解決できずにいます。
どのようにしたら空の吹き出しは決して正常に表示できるか教えてください。

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

views/messages/index.html.erb

<div class="container message"> <div class="wrapper col-md-8 col-md-offset-2 col-sm-10 message-index"> <p class="message-user-name"><%= @conversation.target_user(current_user).name %>さんとのメッセージ</p> <% if @over_ten %> <center><%= link_to '以前のメッセージをすべて表示', '?m=all' %></center> <% end %> <div class="ui segment"> <% @messages.each do |message| %> <% if message.user_id == current_user.id %> <!-- 自分のメッセージ --> <div class="item-right"> <% user = User.find(message.user_id) %> <div id="balloon1"> <%= message.body %> </div><br> <div class="clear"></div> <p><%= message.message_time %></p> </div> <br> <% else %> <!-- 相手のメッセージ --> <div class="item-left"> <% user = User.find_by(id: message.user_id) %> <%= profile_img(message.user) %> <div id="balloon"> <%= message.body %> </div> <p><%= message.message_time %></p> </div> <% end %> <% end %> </div> <!-- メッセージの送信 --> <%= form_for [@conversation, @message], html: {class: "ui reply form"} do |f| %> <div class="message-field"> <%= f.text_area :body, class: "form-control input-mysize" %> <%= f.text_field :user_id, value: current_user.id, type: "hidden" %> <%= f.submit "メッセージを送る" %> </div> <% end %> </div> </div>

message.scss

.message { margin-top: 70px; margin-bottom: 80px; .message-user-name { text-align: center; background-color: #40454E; color: white; padding: 20px; } } .message-index { background-color: #E1EFFA; padding: 0; } .message-field { padding-top: 20px; background-color: white; } .segment { padding: 20px; } .input-mysize-message { width: 100%; height: 300px !important; } .item-right { text-align: right; margin-top: 5px; margin-bottom: 5px; } .item-left { text-align: left; margin-top: 5px; margin-bottom: 5px; p { padding-left: 410px; } } .clear { clear:both; } div#balloon{ background: #fff; dispay: inline-block; position: relative; width: 500px; height: auto; padding: 20px; border: 1px solid #000; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; margin-left: 40px; } div#balloon:before { content: ""; display: inline-block; border: 10px solid transparent; border-right-color: #000; position: absolute; left: -20px; top: 50%; margin-top: -9px; } div#balloon:after { content: ""; display: inline-block; border: 9px solid transparent; border-right-color: #fff; position: absolute; left: -18px; top: 50%; margin-top: -8px; } div#balloon1{ float: right; width: 500px; height: auto; padding: 20px; background: #fff; dispay: inline-block; position: relative; border: 1px solid #000; -moz-border-radius: 3px; -webkit-border-radius: 3px; border-radius: 3px; } div#balloon1:before { content: ""; display: inline-block; border: 10px solid transparent; border-left-color: #000; position: absolute; right: -20px; top: 50%; margin-top: -9px; } div#balloon1:after { content: ""; display: inline-block; border: 9px solid transparent; border-left-color: #fff; position: absolute; right: -18px; top: 50%; margin-top: -8px; }

#状況追記
どうやら枠線を設定したりすると勝手に空のメッセージ部分が表示されてしまうみたいです。
原因は分かったのですが、どう解決すればいいか分かりません。

分かりづらい説明ですがアドバイス頂けると嬉しいです。

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

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

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

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

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

guest

回答1

0

自己解決

messages_controller.rb

@message = @conversation.messages.build(user: current_user) この部分を @message = Message.new(user: current_user) に変更

これで解決できました!

投稿2017/04/03 12:34

riamk

総合スコア47

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問