У меня есть вспомогательный метод в моем dashboard_helper.rb
, который выглядит следующим образом:
def show_number_of_comments(node)
if node.comments_count == 1
"#{node.comments_count} Comment"
else
"#{node.comments_count} Comments"
end
end
В моем обычном представлении dashboard#index
я называю это следующим образом:
<h4 class="card-comments-title"><%= show_number_of_comments(node) %></h4>
Но я хотел бы обновить этот обработанный элемент через AJAX всякий раз, когда добавляется новый комментарий, поэтому в моем comment#create.js.erb
я хотел бы ссылаться на этот вспомогательный метод, но когда я его пробую, он не работает:
$('#<%= @card_id %> .card-comments-title').html('<%= show_number_of_comments(@node) %>');
Но когда я это делаю, он работает:
$('#<%= @card_id %> .card-comments-title').html('<%= @comment_count %> Comments');
Проблема с последним заключается в том, что он не обрабатывает плюрализацию.
Какой лучший способ приблизиться к этому?
Изменить 1
Когда я говорю, что это не работает, вот что я имею в виду:
NoMethodError at /nodes/5/comments
==================================
> undefined method `show_number_of_comments' for #<#<Class:0x007fbd3715e5b8>:0x007fbd3715d4d8>
app/views/comments/create.js.erb, line 5
----------------------------------------
Кроме того, объект @node
объявлен в моем Comments#Create
следующим образом:
def create
@node = Node.find(params[:node_id])
@comment = current_user.comments.new(comment_params)
@comment.node = @node
@card_id = params[:card_id]
@comment_count = @node.comments_count + 1
current_user.events.create(action: "commented", eventable: @comment)
binding.pry
respond_to do |format|
if @comment.save and @node.save
format.js
else
format.js
end
end
end
Когда я останавливаю выполнение с помощью binding.pry
, как указано выше, и я пытаюсь сделать @node
, я получаю ожидаемое значение:
[1] pry(#<CommentsController>)> @node
=> #<Node id: 5, name: "Reverse Crunches", family_tree_id: 1, user_id: 1, media_id: 5, media_type: "Video", created_at: "2015-07-25 05:49:51", updated_at: "2015-07-25 21:05:34", circa: nil, is_comment: nil, cached_votes_total: 0, cached_votes_score: 0, cached_votes_up: 0, cached_votes_down: 0, cached_weighted_score: 0, cached_weighted_total: 0, cached_weighted_average: 0.0, cached_user_tag_list: nil, cached_num_user_tags: 0, cached_tagged_user_names: [], comments_count: 3>
Изменить 2
Иногда это просто терпит неудачу. Он не выводит никаких ошибок ни на консоль, ни на мой серверный журнал, она просто заменяет .card-comments-title
пустым значением.