如何在RoR嵌套表单中实现链式选择
How to implement chained selects in an RoR nested form?
我有一个运行Ruby 2和Rails 4的web应用程序,还有一个非常复杂的表单。问题是,嵌套资源的字段是动态创建的,并给定日期和时间的唯一组合,但在我的javascript中,我需要定义哪个select链接到哪个select。
我在概念中使用的两个教程如下:http://homeonrails.blogspot.de/2012/01/rails-31-linked-dropdown-cascading.htmlhttp://railscasts.com/episodes/196-nested-model-form-revised
但重要的代码基本上在三个不同的文件中:
$(document).ready(function(){
$('select#device_name').chainedTo('select#room_name');
});
这将一个选择链接到另一个选择,并且可以在表单模板或字段部分中呈现。
helper方法如下所示:
def link_to_add_fields(name, f, association)
new_object = f.object.send(association).klass.new
id = new_object.object_id
fields = f.fields_for(association, new_object, child_index: id) do |builder|
render(association.to_s.singularize + "_fields", f: builder)
end
link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("'n", "")})
end
最后但同样重要的是咖啡脚本:
jQuery ->
$('form').on 'click', '.remove_fields', (event) ->
$(this).prev('input[type=hidden]').val('1')
$(this).closest('fieldset').hide()
event.preventDefault()
$('form').on 'click', '.add_fields', (event) ->
time = new Date().getTime()
regexp = new RegExp($(this).data('id'), 'g')
$(this).before($(this).data('fields').replace(regexp, time))
event.preventDefault()
因此,我对其工作原理的理解是,我点击一个按钮,helper方法创建一个新的关联,获取id,从partial中渲染html,而coffee脚本只是用当前日期时间替换对象的id,这样我就可以添加多个关联,而它们没有相同的id。
问题是,如何更改链接函数的javascript,以获取选择框的id,因为现在我不知道如何创建一个动态javascript来接受coffescapet中的日期-时间,或者让javascript搜索它们并自行更改。
如有任何帮助或提示,我们将不胜感激!
嗯,解决方案正如预期的那样简单。使用以下命令可以获得嵌套资源的子索引:
<%= f.object_name.gsub(/[^0-9]+/,'') %>
这个索引可以传递到javascript中,将两个选择链接到一起:
$(document).ready(function(){
$('select#device_attributes_<%= f.object_name.gsub(/[^0-9]+/,'') %>_name').chainedTo('select#room_attributes_<%= f.object_name.gsub(/[^0-9]+/,'') %>_name');
});
相关文章:
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 选择下拉菜单:实现非精确搜索,每个单词都将被不可重复地搜索
- 如何在高图表中实现多点数据选择
- 选择一个具有纯 js 与C++ 的节点.js库,并在实现上添加
- 如何在RoR嵌套表单中实现链式选择
- 如何实现多项选择
- 没有“选择”标签的组合框实现
- 使用 Json 数据源在数据表中实现复选框选择
- 如何使用纯 Javascript 和文档查询选择器实现 jQuery .on() 函数
- 如何在 HTML 示例中实现引导日期选择器沙箱
- 我可以在 RichFace 中为文件上传实现多个文件选择,或者使用 javascript 为此实现自定义标签吗?
- 自定义查询选择器全部实现
- 如何实现具有多个选择的下拉列表并检索所选元素
- 函数“beforeShowDay”和“onSelect”在遵循日期选择器小部件实现中实际做了什么
- 我们如何根据在 Telerik Gridview 中选择的项目实现 HeaderCheckBox 以选中和未选中
- 如何在选择菜单中实现数组功能
- 如何在动态生成的选择标签中实现onchange函数
- 如何在一个页面上实现多个 Dropbox Javascript 选择器
- 如何实现/模拟jQuery UI's的日期选择器
- 如何实现选择/文本输入组合