Почему средство выбора даты не отображается в форме Rails 3 - PullRequest
0 голосов
/ 28 сентября 2011

Я не могу понять, почему jQuery datepicker не отображается, хотя у меня запущено jQuery в моем приложении.Вот что я сделал:

Я получил форму Rails, которая включает

  <div id="born_in">
   <%= f.text_field :born_in %><br />
   </div>

Я включил jQuery, jQuery-UI, CSS в заголовок моего application.html.erb

<%= stylesheet_link_tag "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" %>

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js",
    "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js" %>     

У меня также есть application.js, который показывает, что мой селектор не равен nil:

alert($("#born_in").length)  

возвращает 1

Я пробовал:

$("#born_in").datepicker("show")

но это ничего не показывает.Так почему я не вижу datepicker ()?Есть ли ошибка с datepicker для этой версии jquery-UI?Как мне проверить, включена ли эта функция в мое приложение?

Спасибо.

Ответы [ 3 ]

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

Rails решает, что ему нравится добавлять в форму входные данные с именем контроллера в id.Например, моим именем контроллера было «Testjqueryui», и в части _form было сгенерировано следующее (очень похоже на ваше):

<%= f.text_field :date %>

Сгенерированный HTML (после запуска встроенного рубина) имеет идентификатор:: "testjqueryui_date".

Итак, я бы посоветовал проверить идентификатор сгенерированного поля, поскольку к нему, вероятно, добавлено имя контроллера.

Я поместил это в application.jsfile:

$(function() {
    $( "#testjqueryui_date" ).datepicker();
});

Надеюсь, это поможет!

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

Вам просто нужно использовать селектор jQuery, чтобы найти все поля, которые вы хотите отобразить как средства выбора даты. Один из способов сделать это - присвоить конкретный класс css полям datepicker, например:

<div id="born_in">
    <%= f.text_field :born_in, :class => "date" %>
</div>

А затем, в вашем файле application.js (или где вы хотите), просто напишите:

$(function() {
    $('input.date').datepicker();
});

Вы также можете использовать идентификатор конкретного элемента вместо класса css. Вы знаете требования. Надеюсь, это полезно.

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

было ли оно инициализировано до того, как было вручено?как, вы звонили

$("#born_in").datepicker();

где-то до этого кода?если нет, вам не нужно "show", просто запустите метод без параметров.

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