JQueryとRailsの両方に慣れていないので、どんな助けでも大歓迎です。
動的選択メニューに関するRailsCastチュートリアルに従っていますが、フォームを読み込もうとすると、動的選択が機能せず、FirebugでJQueryが読み込まれていないというエラーが発生します。Assets / application.jsを確認しましたが、関数が正しく読み込まれているようです。また、他のコンテンツが生成される前に、javascript_include_tagをレイアウトファイルに含めています。アセットをプリコンパイルしてみましたが、何も起こらなかったようです。
奇妙なことに、別のコントローラー用に別のJQuery関数が定義されていて、その関数は完全に正常に機能しています。私はここで何が起こっているのか完全に困惑しています。
更新-コードスニペットを追加します。
application.js
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .
application.html.erb
<head>
<title> <%= default_title(yield(:title)) %> </title>
<%= stylesheet_link_tag "application", :media => "all" %>
<%= javascript_include_tag "application" %>
<%= csrf_meta_tags %>
</head>
...
<div class="container">
...
<%= yield %>
<%= debug(params) if Rails.env.development? %>
</div>
hostprofiles.js.coffee
JQuery ->
cities = $('#hostprofile_city_id').html()
console.log(cities)
$('#hostprofile_country_id').change ->
country = $('#hostprofile_country_id :selected').text()
escaped_country = country.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1')
options = $(cities).filter("optgroup[lable=#{escaped_country}]").html()
console.log(options)
if options
$('#hostprofile_city_id').html(options)
$('#hostprofile_city_id').parent().show()
else
$('#hostprofile_city_id').empty()
$('#hostprofile_city_id').parent().hide()
生成されたjquery関数はapplication.jsです
(function() {
JQuery(function() {
var cities;
cities = $('#hostprofile_city_id').html();
console.log(cities);
return $('#hostprofile_country_id').change(function() {
var country, escaped_country, options;
country = $('#hostprofile_country_id :selected').text();
escaped_country = country.replace(/([ #;&,.+*~\':"!^$[\]()=>|\/@])/g, '\\$1');
options = $(cities).filter("optgroup[lable=" + escaped_country + "]").html();
console.log(options);
if (options) {
$('#hostprofile_city_id').html(options);
return $('#hostprofile_city_id').parent().show();
} else {
$('#hostprofile_city_id').empty();
return $('#hostprofile_city_id').parent().hide();
}
});
});
}).call(this);