Использование jQueryUI Datepicker для запроса представления Rails на основе определенной даты - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть jQueryUI Datepicker на странице профиля пользователя. Когда пользователь выбирает дату, а не заполняет текстовое поле значением даты, я хотел бы немедленно отправить запрос GET для получения статистики для этого пользователя на выбранную дату.

URL будет примерно таким:

/users/1?date=20110905

И тогда мой UsersController посмотрел бы на params[date] и запросил бы модель для соответствующих данных на основе даты.

Часть, с которой у меня проблемы, это часть JavaScript. Мне нужно подключиться к событию jQueryUI Datepicker onSelect, но после того, как я поймаю событие:

  1. Как получить идентификатор пользователя из кода JavaScript?
  2. Как мне отправить GET запрос? Я хочу перезагрузить полную страницу, поэтому я должен использовать window.location?

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011

Вы можете получить путь к URL с помощью location.pathname, и вы можете перезагрузить текущую страницу, назначив location.href URL-адресу, с которым вы хотите перезагрузить страницу.Итак, вы, вероятно, будете выглядеть примерно так:

$('#datepicker').datepicker({
    onSelect: function(dateText, inst) {
        // location.pathname == '/users/1'
        var userId = location.pathname.split('/')[2];
        var dateText = ...

        location = location.href + "?date=" + dateText;;
    }
});

Обратите внимание, location.href дает вам полный URL-адрес, включая строку запроса (для метода GET) и хэш, тогда как location.pathname дает вампуть URL.См. документацию MDN для объекта location.

0 голосов
/ 05 сентября 2011

При обработке файла ERB теги <%%> обрабатываются первыми на сервере.Затем результат отправляется в браузер.Таким образом, вы можете добавить теги ERB в ваш javascript, например:

var user_id = <%= user.id %>;

Затем вы можете использовать window.location для перенаправления, например, для действия index:

window.location = "<%= url_for :action => :index %>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...