JQuery 和 Rails 的新手,任何帮助将不胜感激。
我正在关注关于动态选择菜单的 RailsCast 教程,但是当我尝试加载表单时,动态选择不起作用,并且我在萤火虫中收到错误,指出未加载 JQuery。我检查了 assets/application.js 并且该功能似乎已正确加载。在生成任何其他内容之前,我的布局文件中也包含了 javascript_include_tag。我尝试预编译我的资产,但这似乎没有任何作用。
奇怪的是我为另一个控制器定义了另一个 JQuery 函数,并且该函数运行良好。我完全被这里发生的事情弄糊涂了。
更新 - 添加代码片段。
应用程序.js
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .
应用程序.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);