JQuery Datepicker с вложенными ресурсами Rails 3.1 - PullRequest
1 голос
/ 06 января 2012

Я пытаюсь использовать функцию datepicker в моем приложении, которое работает с Rails 3.1.Я заработал, если использовал в своем файле application.js следующее:

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

Теперь у меня есть вложенный ресурс, и я много раз пытался заставить его работать, но неиметь успехПроведя некоторые исследования, я обнаружил, что возможное решение будет следующим:

  $(function(){
    $('.datePicker').datePicker();
  });

Но если я добавлю класс в мои поля, он больше не будет работать на exam_deadline.Я не очень знаком с Javascript, и я надеюсь, что кто-то может сказать мне, что я делаю неправильно.Это фрагменты из моих представлений и .js: js:

function remove_fields (link) {
  $(link).prev("input[type=hidden]").val("1");
  $(link).closest(".fields").hide();    
}

function add_fields(link, association, content) {
  var new_id = new Date().getTime();
  var regexp = new RegExp("new_" + association, "g");
  $(link).parent().before(content.replace(regexp, new_id));
}

view: exam:

<%= semantic_form_for @exam do |f| %>
<%= f.inputs do%>   
<%= f.input :deadline,  :as => :string, 
       :start_year => Time.now.year, :label => "Anmeldefrist", 
       :order =>[:day,:month,:year], :class => 'datePicker'%>
<% end %>   
<%= f.semantic_fields_for :examdates do |builder|%>
  <%= render "examdate_fields", :f => builder %>
<% end %>
<p>
  <%= link_to_add_fields "Termin hinzufügen", f, :examdates %>
</p>

<%end%>

examdate_fields:

<%= f.inputs :class => 'fields' do%>
<%= f.input :date, :label =>"Termin", 
    :as => :string,
    :order =>[:day,:month,:year], :start_year => Time.now.year,
    :class=>"datePicker" %>
<%= link_to_remove_fields "Entfernen", f %>
<%end%>

my application.html.erb:

<!DOCTYPE html>
<html>
  <head>
   <title><%= content_for?(:title) ? yield(:title) : "Untitled" %></title>
    <%= stylesheet_link_tag "http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/redmond/jquery-ui.css",
    "application", "formtastic.css", "formtastic_changes.css" %>
    <%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", 
    "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js",   "application" %>
    <%= csrf_meta_tag %>
    <%= yield(:head) %>
  </head>
...

Заранее благодарим за каждый маленький совет!

Ответы [ 2 ]

0 голосов
/ 06 января 2012

Хорошо, после долгих попыток я понял. Я изменил JS на:

$(function(){
  $(".datePicker").datepicker();
  $('#ui-datepicker-div').hide();
  $.datepicker._defaults.dateFormat = 'dd M yy' 
});

и мой взгляд:

<%= f.input :date, 
  :label =>"Termin", 
  :as => :string,
  :order =>[:day,:month,:year], 
  :start_year => Time.now.year, 
  :input_html => {:class =>"datePicker" }%>

Теперь это работает :) Надеюсь, это поможет другим, кто борется с той же проблемой.

0 голосов
/ 06 января 2012

Просто быстрое предположение.Вы пытаетесь использовать одинарные кавычки с именем класса.

Если это не решит проблему, я бы попробовал придерживаться идентификаторов вместо имен классов (я не знаю, может ли DatePicker по-прежнему ссылаться на нихправильно с селекторами классов).Вам просто понадобится другой идентификатор для каждого ввода и динамически создаваемый javascript (средство выбора даты для каждого динамически создаваемого ввода) вместо статического js-файла.

...