У меня есть система голосования для модели Subrating, где, если пользователь голосует, нажимая на значок, тогда его IP-адрес добавляется в список, что мешает ему голосовать снова, а пустой значок голосования заменяется зеленым значок голосования, оба из которых определены в отдельных div. Я хотел бы сделать это. Я выяснил, как обновить подсчет голосов с помощью Ajax, но есть ли способ переключаться на значки div голосования при нажатии кнопки?Могу ли я использовать Ajax для переключения div?
Вот что у меня есть: Скажем, я хочу переключить <div id="<%= subrating.name %>upz">
на <div id="voted">
.
просмотров/вещи/show.html.erb:
<% if (([email protected]? request.remote_ip) && ([email protected]? request.remote_ip)) %>
<div id="subratings" >
<div id="<%= subrating.name %>"><%= number_to_percentage(subrating.rating, precision: 0) %></div>
<div id="<%= subrating.name %>upz">
<a id="<%= subrating.name.downcase %>_link"><%= link_to image_tag("UpArrowGray.png", alt: "votedown", class: 'uparrowsub'), upvote_subrating_path(:id => subrating.id), method: :get %></a>
</div>
<script type="text/javascript">
$("#<%= subrating.name.downcase %>_link").click(function() {
$.get("<%= upvote_subrating_path(:id => subrating.id) %>", function(data) {
$('#<%= subrating.name %>').html(data + ' %');
});
});
</script>
Контроллеры/subratings_controller.rb
def upvote
@subrating = Subrating.find(params[:id])
UpVote.create!(ip: request.remote_ip, vanishing: false, voteable_id: params[:id], voteable_type: 'Subrating')
redirect_to @subrating.thing
render text: ((@subrating.up_votes.count.to_f + 2).to_f/(@subrating.up_votes.count.to_f + @subrating.down_votes.count.to_f + 3).round(1).to_f * 100).to_s
end
Спасибо, изменение Div идентификаторов работает, но вы правы, я хочу, чтобы изменить содержание. Как я могу удалить/скрыть/добавить/показать divs? –
Ничего, я это понял :) –