A have the following action in controller:
def new_messages
@new_msgs = Message.find(:all, order: 'id desc', limit: 12)
respond_to do |format|
format.js
end
end
and javascript erb file 'new_messages.js.erb' that returns to client after new_messages action:
var data = '';
<% @new_msgs.each do |m| %>
data += '<tr><td><%= m.user.name %></td><td><%= m.text %></td><td><%= m.created_at %></td></tr>';
<% end %>
$('#messages-table').html('');
$('#messages-table').append(data);
Here I just compose rows for new messages and try to append result to my table '#messages-table'. But there is the issue: browser gets invalid javascript from server (according to Network -> request -> Response tab in Chrome Developer Tools):
var data = '';
data += '<tr><td>dime</td><td>cowboys from hell
</td><td>2014-01-24 15:11:36 UTC</td></tr>';
$('#messages-table').html('');
$('#messages-table').append(data);
Line break in the line #2 causes SyntaxError: Unexpected token ILLEGAL. Is it possible to return javascript as it is in my new_messages.js.erb file? How to avoid such dangerous behavior?