Как заменить html с помощью Rails 3 + jQuery? - PullRequest
1 голос
/ 05 апреля 2011

У меня есть несколько бланков на моей странице после имен таблиц базы данных. Используя jQuery для готовых документов, я хочу заменить эти счетчики на количество записей в именах таблиц, перечисленных в отдельности.

Например, ниже представьте, что звездочка - это блесна:

Клиентские заказы *

изменяется на:

Клиентские заказы (125)

  • Я уже знаю, как получить количество записей в таблице.
  • Я не знаю точно, как позвонить из jQuery в Rails, передать имя таблицы в качестве параметра , чтобы получить счет.
    • Создать ли частичку .js.erb?
    • Должен ли я просто ссылаться на вспомогательный метод, который возвращает сгенерированный html?
  • Какая лучшая практика?

Как будет выглядеть мой код jQuery в готовом документе?

<script type="text/javascript">
     $(document).ready(function() {
         $('#spinner1').html(/* ??? */);
         $('#spinner2').html(/* ??? */);
         $('#spinner3').html(/* ??? */);
  });
</script>

РЕДАКТИРОВАТЬ: Хорошо, позвольте мне сказать это по-другому ... У меня есть вспомогательная функция, которая принимает аргумент table_name и возвращает выходной HTML. Как мне вызвать эту функцию, чтобы она запускалась после загрузки страницы?

  • Можно ли вызвать его в document.ready через jQuery?
  • Или мне нужно частичное представление .js.erb?
  • Или я что-то упустил полностью?

1 Ответ

2 голосов
/ 02 мая 2011

Самый простой / быстрый способ сделать это - создать несколько новых действий контроллера с помощью шаблонов html.erb, а затем использовать функцию load () jquery. Итак:

Сначала создайте новое действие, которое выводит (используя шаблон .html.erb) HTML-код, который вы хотите отобразить после documentReady. Убедитесь, что ваш контроллер не использует макеты для действия, и создайте именованный маршрут, который ссылается на действие. Поскольку у вас уже написаны вспомогательные функции, шаблон должен просто вызвать вашу вспомогательную функцию с соответствующими аргументами.

Итак, если ваш контроллер называется «Пользователи», а ваше новое действие называется «ajax_info», вы должны создать новый маршрут с именем user_ajax_info и связать его с «users / ajax / info». Если вы зашли на страницу пользователя / ajax / info в браузере, вы увидите содержимое (и только содержимое), которое вы хотите подключить к документу с помощью AJAX.

Затем вы можете загрузить содержимое документа, готового с помощью load () Jquery, например:

<%= javascript_tag do %>
  $(document).ready(function() {
    $('spinner1').load('<%= user_ajax_info_url -%>');
  });
<% end %>

Rails затем автоматически передает правильный URL для user_ajax_info в Jquery; Jquery загрузит содержимое по этому URL и заменит содержимое spinner1 новым содержимым. Подробнее см. http://api.jquery.com/load/.

Обратите внимание, что технически это, вероятно, не лучшая практика; было бы намного лучше (с точки зрения практики) вернуть данные с использованием XML / JSON. С другой стороны, это также намного сложнее реализовать; Я бы рекомендовал начать с этого, а затем обновить позже, если это станет необходимым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...