2012-01-06 14 views
1

Rails 3.1で動作する私のアプリケーションでdatepicker関数を使用しようとしました。ネストしたリソースを持つJQueryのDatepicker Rails 3.1

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

は、今私は、ネストされたリソースを持っており、これは同様にそれのために働いて得るために多くのことを試してみましたが、didn'tいずれかを持っている:私は私のapplication.jsファイルに以下の使用している場合、私はそれが働いてしまいました成功。

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

しかし、私は私のフィールドにクラスを追加する場合、それももうexam_deadlineのために働くdoesn't:いくつかの研究で、私は可能な解決策はこれだろうことがわかりました。私はJavascriptに慣れていないので、誰かが私に間違っていることを教えてくれることを願っています。 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)); 
} 

ビュー: 試験:

<%= 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%> 

私application.html.erb これは私の意見との.jsからの抜粋は以下のとおりです。

<!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> 
... 

おかげさまで、すべての小さなチップがありがとう!

答えて

0

オクラホマ、試してみた後、私はそれを得た。

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

と私の見解::私はにJSを変更

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

今では私はそれは同じ問題に苦しむ人を助け願っています:)動作します。

0

簡単に推測できます。クラス名を使用して試しにシングルクォートを使用しています。

これで問題が解決しない場合は、クラス名の代わりにIDを使用しようとします(datepickerがクラスセレクタで正しく参照できるかどうかわかりません)。静的なjsファイルの代わりに、すべての入力に別のIDと動的に作成されたjavascript(動的に作成されたすべての入力に対してdatepicker)が必要になります。

+0

クイックアンサーに感謝します。一重引用符は問題ではありませんでした。私がIDを使用すると、どのように機能がどのように見えるか教えていただけますか?入力フィールドでは、classをIdに置き換えるか、別の場所に配置する必要がありますか?それはまた、入力タグに既にクラス「フィールド」があるという事実と関係がありますか? –

関連する問題