2013-05-23 2 views
0

Я работаю над приложением Ruby on Rails с рейтинговой системой. Рейтинг пока работает. Я также сделал это, и он работает. Я также хотел отобразить текущее среднее значение рейтинга в баре, длина которого соответствует среднему значению всех рейтингов.Ajaxified Average-Rating Bar не перезагружается в Rails

Длина Бара устанавливаются следующим образом

var average = parseFloat($(".rating_filled").attr("data-average")); 

var avg_width = (average/5)*200; 


$(".rating_filled").css("width", avg_width); 

Значение, передаваемые в HTML следующим образом

<div class="rating_bar"> 
     <div class="rating_filled" data-average="<%[email protected](:value) %>"></div> 
    </div> 

Через AJAX Я перезагрузить полный Partial, который содержит этот бар и другие статистические данные. Все снова перезагружается, кроме бара. Как только я отправлю оценку, я получаю текущее среднее значение, но панель полностью исчезает. Firebug указал, что сам барабан получает последнее представленное значение, поэтому это отлично работает, но графическая часть отсутствует.

Поэтому я предполагаю, что это связано с тем, что файл javaScript (где определенная длина графической информации) не перезагружается через ajax и, следовательно, не отображает панель вообще.

Я не знаю, нужно ли мне настраивать команды jQuery, чтобы быть актуальными или даже что-то делать в моем контроллере, передавая материал через Json.

Я не знаю, могли бы вы, ребята, помочь мне? спасибо большое!

+1

Как вы перегрузочные все? Вам нужно повторно запустить JS, который вы используете, чтобы сначала установить ширину. Если вы включаете те же строки в JS, где вы перезагружаете частичный, тогда вы будете в бизнесе. – RobHeaton

+0

ну, вот в чем смысл ... это может быть очень просто, но как перезагрузить JS? или вы имеете в виду, что я должен встраивать javascript в части html.erb? не будет ли это оскорбительным для ненавязчивой концепции рельсов JS? –

+0

Это зависит от того, как вы перезагружаете частичное - как вы перерисовываете частичную страницу? – RobHeaton

ответ

0

Это то, что мои частичные выглядит как

<div class="rating_stats"> 
<div> 
    Durchschnittswert: 
    <span class="rating_avg"> 
    <% if [email protected]_rating.present? %> 
     unbewertet 
    <% else %> 
     <%= @game.ratings.average(:value).round(2) %> 
    <% end %> 
    </span> 
    <div class="rating_bar"> 
     <div class="rating_filled" data-average="<%= @game.ratings.average(:value) %>"></div> 
    </div> 
</div> 

<div> 
    Anzahl Wertungen: 
    <span class="rating_amount"><%= @game.ratings.count %></span> 
</div> 

<% if user_signed_in? %> 
<p> 
    Ihre Wertung : 
    <span class="current_user_rating"> 

     <%= current_user_rating %> 

    </span> 
</p> 
<% end %> 

+0

Вложение кода javaScript в частичный сработал! Спасибо за хороший совет! –