Ответ 1
Я нашел решение! Просто имея код рельсов внутри # {}:
$("#comments_<%[email protected] %>").append("<%= escape_javascript("#{render :partial => 'posts/comment', :locals => { :comment => @comment }}").html_safe %>");
Следующая строка кода:
$("#comments_<%[email protected] %>").append("<%= escape_javascript(render :partial => 'posts/comment', :locals => { :comment => @comment }) %>");
Предполагается, что часть тега coments_xx div будет содержать частичный html. что содержимое частичное вставлено, но не интерпретируется как html, я имею в виду, вместо того, чтобы вставлять комментарий с его правильным форматом, я вижу весь код на веб-странице:
Пример (вот как он вставляет его на веб-страницу):
1 Comment
<div id=comment_5_34> <span class=dateandoptions> Posted less than a minute ago<br/>
<a href=/comments/34/5 data-method=post data-remote=true rel=nofollow>Deletea> span>
<p><b>otra pruebab> wrote:p> <br/> <p><b> Webpage:b>asss.comp> <br/> <p class=comment-body>heeyeyeyyhep>div>
Thanks for commenting!
Если я проанализирую введенный javascript-код, я получу что-то вроде этого (я использовал расширение firebug, чтобы увидеть его):
/* Add the new comment to the bottom of the comments list */
$("#comments_5").append("<div id=comment_5_34> <span class=dateandoptions> Posted less than a minute ago<br/> <a href=/comments/34/5 data-method=post data-remote=true rel=nofollow>Deletea> span> <p><b>otra pruebab> wrote:p> <br/> <p><b> Webpage:b>asss.comp> <br/> <p class=comment-body>heeyeyeyyhep>div>");
Наконец, это код частичного, который я вставляю:
<div id="comment_<%=comment.post.id%>_<%=comment.id%>">
<span class="dateandoptions">
Posted <%= time_ago_in_words(comment.created_at) %> ago<br/>
<%= link_to 'Delete', {:controller => 'comments', :action => 'eliminar', :id => comment.id, :post_id => comment.post.id}, :method => :post, :remote => true %>
</span>
<p><b><%= comment.user_name %></b> wrote:</p>
<br/>
<% if comment.web_page != nil %> <p><b> Webpage:</b><%= comment.web_page %></p> <% end %>
<br/>
<%= content_tag(:p, comment.contenido, :class => "comment-body") %>
</div>
Надеюсь, что смогу хорошо объяснить себя!
заблаговременно за вашу помощь.
Я нашел решение! Просто имея код рельсов внутри # {}:
$("#comments_<%[email protected] %>").append("<%= escape_javascript("#{render :partial => 'posts/comment', :locals => { :comment => @comment }}").html_safe %>");
У меня была аналогичная проблема несколько дней назад. Похоже, вы бегаете из Rails, что делает HTML-выход безопасным.
Попробуйте добавить .html_safe в конец escape_javascript:
<%= escape_javascript(render :partial => 'posts/comment', :locals => { :comment => @comment }).html_safe %>
В настоящее время я не могу проверить, но если это вызвано той же проблемой, что и моя, это должно сработать для вас.
Я попробовал решение SaucyK, и это похоже на путь, но все же у меня есть странный вывод, отображаемый в моем браузере.
Итак, теперь строка кода идет (как предположил SaucyK):
$("#comments_<%[email protected] %>").append("<%= escape_javascript(render :partial => 'posts/comment', :locals => { :comment => @comment }).html_safe %>");
И вот что я теперь получаю в своем браузере:
Posted less than a minute ago
Deletea> span>
diego probandob> wrote:p>
Webpage:b>www.toteria.comp>
pruebaaaap>div>
Если я посмотрю в последнем html-коде, создаваемом рельсами и JQuery, я получаю следующее:
<div style="" id="comment_5_40">
<span class="dateandoptions"> Posted less than a minute ago<br> <a href="/comments/40/5" data-method="post" data-remote="true" rel="nofollow">Deletea> span> <p><b>diego probandob> wrote:p> <br> </b></p><p><b><b> Webpage:b>www.toteria.comp> <br> </b></b></p><p class="comment-body"><b><b>pruebaaaap>div></b></b></p></a></span></div></div>
и комментарий, который я написал, был
diego probando wrote:
Webpage:www.toteria.com
pruebaaaa
Когда я обновляю веб-страницу (так что commment вводится через рельсы, а не через Javascript), все в порядке.
Итак, как вы можете видеть в начале, код интерпретируется rigth, но затем есть места, где вместо получения "я получаю > или вместо получения я получаю b > .
Можно ли это связать с методом escape_javascript?? я понимаю, что это необходимо в любом случае, если я не хочу, чтобы javascript попытался интерпретировать мой ruby-код.
Код частичной вставки я все равно такой же, как в первом сообщении!.
Спасибо за ваш ответ, извините, мне нужно ответить на этот вопрос, но я не был зарегистрирован в stackoverflow, когда я написал вопрос.