Не добавляя фактический HTML в Rails
Я использую Ruby on Rails 3.0.8. Я пытаюсь следовать учебнику Райана Бейтса, найденному здесь.
Вот весь мой код, затем я объясню, что он делает:
Сообщения / index.html.erb
<ul id="chat">
<%= render @messages %>
</ul>
<br/>
<%= form_for Message.new, :remote => true do |f| %>
<%= f.text_field :content %>
<%= f.submit "Send" %>
<% end %>
messages / _message.html.erb (я использую теги содержимого вместо чистого HTML)
<%= content_tag :li do %>
<%= content_tag :span, :class => "created_at" do %>
<%= message.created_at.strftime("%H:%M") %>
<% end %>
<%= message.content %>
<% end %>
* messages / create.js.erb *
<% broadcast "/messages/new" do %>
$("#chat").append("<%= escape_javascript render(@message) %>");
<% end %>
$("#new_message")[0].reset();
Я думаю, что это весь соответствующий код. Моя проблема в том, что когда я нажимаю "Отправить", он добавляет чистый HTML в мой "чат". Но если я обновлю страницу, этого html больше не будет, пока я не отправлю новое сообщение.
* Перед обновлением *
Просто глядя на это, кажется, что html совершенно неверный, конечный тег для span и li не прав. Почему это происходит? Но когда я освежаюсь, это выглядит довольно хорошо.
* После обновления *
Спасибо всем заранее!
1 ответ
escape_javascript
сломался в Rails 3.0.8 - обновить до Rails 3.0.9 (которая вышла сегодня), чтобы решить эту проблему.
http://weblog.rubyonrails.org/2011/6/16/ann-rails-3-0-9-has-been-released
(Проблемы SafeBuffer, упомянутые в разделе "Изменения" объявления о выпуске, связаны с escape_javascript
)