Похоже, вы захотите разделить ваш код представления на частичные и обновлять только один частичный, когда предоставляется оценка.
Для вашего контроллера, вместо:
respond_to do |format|
format.js
format.html {redirect_to :back}
end
Сделайте что-то вроде:
render :partial => "voutecount"
По вашему мнению, переместите div элементwwewwrapper в новый файл с именем "_votecount.html.erb "в том же каталоге, и вместо этого используйте код рендеринга:
<%= render :partial => "votecount" %>
Если вы хотите заблокировать рейтинг во время его обновления (рекомендуется), то вы можете отрегулировать вызов иконтролировать это больше в JS.Итак, включите ваш javascript в представление:
<%= javascript_include_tag 'votecount' %>
замените ваш link_to на хороший старый html, чтобы иметь больше информации:
<a href="" class="ratelink" updown="up" theid="123"><img src = "...."></a>
<a href="" class="ratelink" updown="down" theid="123"><img src = "...."></a>
И создайте новый voicecount.js в вашей общедоступнойПапка / javascripts со следующим содержимым:
$(function(){
$(".ratelink").click(function(){
var val = $(this).attr('updown');
var theid = $(this).attr('theid');
$("#votewrapper").block({ //blocks rate-rates while processing
message: null,
overlayCSS: {
backgroundColor: '#FFF',
opacity: 0.6,
cursor: 'default'
},
});
if (val == "up") {
$.ajax({
type: 'PUT',
url: "/mymodel/voteup?id="+theid,
success: function(){
$("#votewrapper").unblock();
}
});
} else {
$.ajax({
type: 'PUT',
url: "/mymodel/votedown?id="+theid,
success: function(){
$("#votewrapper").unblock();
}
});
}
})
удачи!:)