> On Dec 24, 2019, at 4:38 AM, fugee ohu <fugee...@gmail.com> wrote:
> 
> I'm trying to create a chat view where if the sender of the message is the 
> current user then the message is displayed on the right side and if the 
> sender is the other user then the message is displayed on the left So far 
> what I have doesn't right or left float the messages, they all appear in the 
> same column
> 
> chat.html.erb:
> 
> <div>
> <h3>Conversation with <%= @conversation_with.name %>
> 
> <div id="message_holder">
>     <% @messages.each do |m| %>
>         <% if m.sender=@conversation_with %>
>             <div><span class="left-float"><%= m.content %></span><br></div>
>         <% else %>
>             <div><span class="right-float"><%= m.content %></span><br></div>
>         <% end %>
>     <% end %>
> </div>
> 
> application.scss:
>     
> .left-float
> {
> float: left;
> }
> 
> .right-float
> {
> float: right;
> }
> 

A span element is an "inline" element, like an individual character of text. It 
has no structure to it at all, unless you give it some by adding display: 
inline-block or display: block to it. If you change those spans to divs, you 
may see a different visual outcome, because divs are naturally display: block 
unless you direct otherwise. 

Also, by itself, float left and float right won't give you any visual feedback 
unless the floated element is narrower than its parent element. A 100% wide 
element floated left doesn't look any different than a 100% wide element 
floated right. If I wanted to make a set of chat bubbles, I might start with 
this:

span.chat {
  display: block;
  width: 80%;
  padding: .3em .9em;
  border-radius: 1em;
  background-color: #ccc;
  float: left;
}

span.chat.originator {
  float: right;
  background-color: #cad5ff;
  text-align: right;
}

And then amend the ERB to set the base class as well as add the override class 
when the message is by the person who started the chat. The result should be 
emitted like this:

<span class="chat originator">foo bar baz</span>
<span class="chat">boo blarg blech</span>

You could make this less specific, css-wise, by adding a "chat" class to the 
parent div, and then changing the selectors like this:

.chat span {
  /* same as first rule above */
}

.chat > .originator {
  /* same as the second rule above */
}

<div class="chat">
  <span class="originator">foo bar baz</span>
  <span>boo blarg blech</span>
</div>

Fool around with these ideas in a regular HTML file, previewed in a browser. 
Don't involve Rails in it at all. The problem is most likely in your HTML or 
CSS.

Walter

> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rubyonrails-talk+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/5cee16be-a1df-4748-b842-7bfab60c9e5c%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/58342DD0-E4D0-436F-A6F7-7A010205AD02%40wdstudio.com.

Reply via email to