- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,对不起我的英语。我是巴西人,还在进步。
我想创建一个名为“collection_cascading_select”的辅助标记。该助手类似于“collection_select”,但他还有一个名为“source”的参数。“源”是 View 中的其他集合。
一旦在“源”中选择了其他选项,就需要运行 JavaScript 函数来获取其值。然后填充同意该值的“collection_cascading_select”集合。
这让人困惑!我已经被这个问题困扰了一个星期,但我的巴西兄弟却没有帮助我。
谢谢!
[编辑]
@萨莫
我让它工作了,但做了一些改变。
var success = function(response) {
for (var item in response){
var id = response[item].breed.id <--------------------
var name = response[item].breed.name <-------------------
var option = $(document.createElement('option')).val(id).html(name)
dependentDropDown.append(option)
}
}
我不明白 FOR IN
是如何工作的。
最佳答案
听起来您正在寻找的答案是自定义表单生成器。您可以创建表单构建器并从 Rails 表单构建器继承,然后将该表单构建器设置为应用程序中的默认构建器。然后,您可以定义一个名为 dependent_dropdown 或 cascading_selection 等的元素。该元素可能会采用源下拉列表的 id。您的助手将输出一个 collection_select,但它也会输出一些 JavaScript,当源下拉列表更改时,这些 JavaScript 会触发 AJAX 调用。
当然,你不必这样做。您可以使用 collection_select,向源下拉列表中添加一些属性(即 :class => 'source_for_dependent', :dependent => some_id
),然后在您的 application.js 中连接一些 JavaScript查找具有 source_for_dependent
类的集合,当 onchange
事件触发时,它会从 dependent
属性中获取 id 并触发 AJAX 调用。
无论哪种方式,这里都是 JavaScript 的示例(使用 jQuery)
$('select.source_for_dependent').change(function() {
var id = // get the id of the dependent dropdown, perhaps by $(this).attr('dependent')
var dependentDropDown = $('#' + id);
dependentDropDown.empty();
var success = function(response) {
for (var item in response) {
var option = $(document.createElement('option')).val(item.val).html(item.text);
dependentDropDown.append(option);
}
}
$.get('/some_controller/some_action/' + $(this).val(), success);
}
成功处理程序被传递到 jQuery 的 get
方法中。它采用 JSON 响应作为参数。我们循环响应,并为每个项目创建一个选项
,从该项目中提取值和文本,并将其附加到依赖的下拉列表中。您的 Controller 可能看起来像这样:
def some_action
@obj = SomeClass.find(params[:id])
respond_to do |format|
format.js { render :json => @obj }
end
end
编辑
您的目标 Controller 取决于您。假设下拉菜单 A 以资源 A 为目标,下拉菜单 B 以资源 B 为目标。A
类型的对象应该具有 B
类型的对象列表。如果您要执行对象 A
的 show
操作,则对象 A
的 as_json
方法需要包括其 B
关联。 This article显示了这方面的示例。
否则,您可以将 index
操作定位到资源 B
。将 B
设为 A
的嵌套资源将是关闭 A
的 id 以获取 B 类型的所有对象的简单方法
具有指向 A
的外键。
关于javascript - 使用 UJS 创建辅助标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4502674/
我正在学习一个简单的教程,出于某种原因,我的 2 个 View 突变(addCard 和 addList)工作正常......但是,我的第三个突变(editCard)似乎在 Vue 中不起作用。当我单
我正在使用 Twitter Bootstrap 的按钮加载状态和 Rails Unobtrusive JavaScript http://twitter.github.com/bootstrap/ja
所以我正在尝试将谷歌地图集成到我的 Rails 应用程序中(请记住,这是我第一次这样做,而且我是 Rails 初学者,而且我不太了解 Ruby 代码)。 map 代码 // When t
我正在使用 Rails jquery ujs用于在我的应用程序中处理 ajax。此外,我还使用confirm选项来销毁任何记录。作为我当前的设置,我通过单击 data-remote=true 链接连接
我正在使用 Rails UJS。我有一个表单设置来执行远程提交,如下所示: 我正在尝试找到一种从 JavaScript 函数提交此表单的方法。我试过: var form$ = $("#new_sub
我已成功在一个 Rails (3.2.6) 应用程序中添加 ujs。添加 :remote => true 到我的表单标签允许我对我的 js.erb 文件进行 ajax 调用以动态加载 div 等..
我在 Rails 应用程序中使用 jQuery 方法“on”来将事件附加到并不总是存在的表单上。当 #myForm 附加到文档时,它似乎没有附加事件处理程序。 以下是 UJS 对 on() 的建议用法
我的 Rails 本地服务器正在努力寻找 jquery-ujs 文件。我该如何解决这个问题? application.js //= require jquery //= require jquery-
首先,对不起我的英语。我是巴西人,还在进步。 我想创建一个名为“collection_cascading_select”的辅助标记。该助手类似于“collection_select”,但他还有一个名为
我在获取 UJS 调用来更新页面显示时遇到问题。我想在选择框更改时更新 div 的值(我已经用 google 搜索了所有地方,但无济于事)。 我像这样设置更改函数(我使用 Haml): %script
我在 Rails 应用程序中使用 UJS 时遇到问题。我需要动态地将内容添加到表格中。问题是,即使是警报功能也无法启动。这是一段代码:_form_index.html.erb
我正在使用带有原型(prototype) ujs rails.js 脚本的 Rails 3.0。 我有一些 link_to "...", :remote => true在页面加载后添加到页面的链接,因
我正在尝试触发远程链接的 ajax:success 回调。我使用的是 Rails 3.0.8 和 jquery-rails 1.0.11。我运行 jquery 生成器来安装 javascript。 j
我正在使用 Rails UJS 根据我单击的链接将部分加载到容器中。我已经一切正常(请参阅我对问题 here 的回答以获取代码),但我想在加载内容时添加一个微调器。我该怎么做呢?我在 Simone C
Rails 版本:3.2.1 Ruby 版本:1.9.3p125 浏览器:Chrome 18.0.1025.162 开发操作系统:Mac OS/X Lion 服务器操作系统:CentOS 5 我正在尝
我正在使用 JQuery 1.4.4 和 jQuery UJS Rails.js 制作 Ruby On Rails 3.0.3 应用程序 ( https://github.com/rails/jque
sprockets 为 js Assets 做了所有的缩小,但是很多 javascript 是在 respond_to :js UJS 响应中编写的。 在编程时使 javascript 可读也会使浏览
这是一个很奇怪的问题。我有一个 Rails 应用程序,我在其中使用 UJS 将页面上的一个部分替换为另一个部分。最近,它停止工作了,所以我开始记录整个过程,看看它在哪里坏了。这是我发现的: 单击链接后
我有一个使用 data-remote => true 提交的表单。 该表单有一个字段,即文本区域。我想在文本区域长度为 0 时阻止提交表单,并且仅在长度为 GT 1 时允许提交表单。 如何以 Rail
新的和很酷的语法让我可以写: link_to some_path, :remote => true 生成 AJAX 请求。但是如果我需要更长的超时时间(例如 100000 毫秒),我可以在哪里设置呢?
我是一名优秀的程序员,十分优秀!