Привет, рельсы 4 новичка здесь. Кажется, я не могу получить ajax для обновления представления. Я в недоумении. Я могу получить предупреждение, чтобы всплывать при нажатии на ссылку +1 в представлении, но я не могу получить представление для обновления (показывать голоса) диапазона с id = «ajaxed», даже если база данных обновляется. Я прочитал путеводители на ajax и посмотрю около 6 видеороликов на youtube о том, как это сделать, и это кажется правильным для меня, но не работает для меня. вот мой HTML:Javascript wont update div rails 4
<tbody>
<% @topics.each do |topic| %>
<tr>
<td><%= topic.title %></td>
<td><%= topic.description %></td>
<td><span id="ajaxed"><%=pluralize(topic.votes.count, "vote")%></span></td>
<td><%= link_to "+1", upvote_topic_path(topic), id: "upvote", remote: true, method: :post%></td>
<td><%= pluralize(topic.downvotes.count, "downvote") %></td>
<td><%= link_to "-1", downvote_topic_path(topic), method: :post %></td>
<td><%= link_to 'Show', topic %></td>
<td><%= link_to 'Edit', edit_topic_path(topic) %></td>
<td><%= link_to 'Destroy', topic, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
Вот мой контроллер:
def upvote
@topic = Topic.find(params[:id])
@topic.votes.create
#redirect_to topics_path
respond_to do |format|
format.html { redirect_to topics_path }
format.js
end
end
вот мой upvote.js.erb:
$('#ajaxed').text('<%=pluralize(topic.votes.count, "vote")%>');
BTW любая другая форма javascript или jquery, которые я делаю на upvote.js.erb, похоже, работают, он просто не обновляет мой пробег «#ajaxed» , Я также попробовал .html и даже прямо js document.getElementById («ajaxed»). InnerHTML = '<% = pluralize (topic.votes.count, «vote»)%>', это дает мне нежелательные результаты. Любая помощь будет принята с благодарностью. Благодаря!!!
Благодарим за быстрый ответ, но теперь только 1-я тема upvotes вне зависимости от того, в какую тему я плюс один. Я не знаю, как установить идентификатор dom, специфичный для отдельных тем, поскольку темы являются динамическими. Я пробовал $ ('# <% = @ topic [: id]%>'), но он не работает. – rod122
Попробуйте установить диапазон как * *. Затем в upvote.js.erb вы можете использовать * $ ("# ajaxed _ <% = @ topic.id%>") *, чтобы различать отдельную тему. –
Спасибо, что сработал! – rod122