Получение неопределенного метода `gsub 'для 6: Fixnum (Rails) в представлении с помощью jQuery + ERB? - PullRequest
6 голосов
/ 06 февраля 2012

Я пытаюсь добавить JQuery + ERB для конкретного представления:

views / posts / show.html.erb (начало файла):

<% content_for :javascript do %>
  <script type="text/javascript">
    $(".post-<%=@post.id%> h3").prepend('<%=escape_javascript @post.votes.count %>');
  </script>
<% end %>

<h2>posts show</h2>

(etc...)

<div class="post-<%=@post.id%>">
  <h3>votes</h3><br />
  <%= link_to "Vote Up", vote_up_path(@post), :remote => true %><br />
</div>

views / layouts / application.html.erb (внизу файла):

(etc...)

</div>

<%= yield %>

<%= yield :javascript %>
</body>

</html>

Но я получаю следующую ошибку:

undefined method `gsub' for 6:Fixnum
Extracted source (around line #3):

1: <% content_for :javascript do %>
2:   <script type="text/javascript">
3:     $("post-<%=@post.id%>").html('<%=escape_javascript @post.votes.count %>');
4:   </script>
5: <% end %>

Есть предложения, чтобы это исправить?

Ответы [ 2 ]

14 голосов
/ 06 февраля 2012

escape_javascript звонки gsub на все, что вы передаете, что не имеет смысла для номера.Вы можете либо не вызывать escape_javascript, либо вместо этого дать ему строку:

$("post-<%=@post.id%>").html('<%=escape_javascript @post.votes.count.to_s %>');
3 голосов
/ 06 февраля 2012

Поскольку @post.votes.count (предположительно) просто целочисленное значение, вы можете просто использовать to_json:

$(".post-<%= @post.id %> h3").prepend(<%= @post.votes.count.to_json %>);

Обратите внимание, что вам не нужно заключать выражение <%= %> в кавычкиto_json сделает это за вас при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...