JQuery AJAX с Rails 3 с использованием частичных - PullRequest
0 голосов
/ 11 октября 2011

У меня есть индексное представление в проекте Rails 3, где перечислены несколько позиций вместе с соответствующим количеством.Например:

Name     Count
--------------
Item A     10
Item B    278
Item c     64

Список является динамическим по длине, однако я знаю идентификатор каждого элемента, и у меня есть часть, которая отображает число передаваемых данных.

Как быЯ изменяю эту настройку, чтобы отображать счет с помощью AJAX (jQuery)?

Например, я хотел бы, чтобы начальное место, где счет должен быть счетчиком.И счетчик будет заменен на фактический счет после того, как будет запущен каким-то образом.Но мне это нужно для каждого элемента в списке.

Чтобы ваш ответ был полезным для меня, предоставьте подробные шаги и пример кода.Спасибо!

1 Ответ

2 голосов
/ 16 ноября 2011

В конце концов я нашел решение для этого.

В контроллере (samples_controller.rb):

# GET /samples/1/count
def count
  sample = Sample.find(params[:id])
  count = sample.data.count
  count_title = "#{number_with_delimiter(count)} samples"

  respond_to do |format|
    format.js {
      if count > 0
        render :partial => 'partials/count', :locals => {:count => count, :count_title => count_title}
      else
        render :nothing => true
      end
    }
  end
end

В представлении (samples / index.html.erb):

<table>
<% @samples.each do |sample| %>
<tr>
  <td class="sample_count">
    <div data-id='<%= sample.id %>'>
      <img src="/images/icons/spinner.gif"/>
    </div>
  </td>
<tr>
<% end %>
</table>

JavaScript в представлении:

<script type='text/javascript'>
    $(document).ready(function() {
        $('.sample_count div').each(function() {
            $(this).load('/samples/' + $(this).attr('data-id') + '/count');
        });
    });
</script>

В конфиге / rout.rb:

controller :samples do
  get "samples" => :index
  delete "samples/:id" => :destroy
  get "samples/:id/count" => :count
end
...