我有一个Web应用程序运行Ruby 2的Rails 4和一个相当复杂的形式。我想要做的是将嵌套形式与链式选择结合起来。问题是嵌套资源的字段是即时创建的,并且给定了日期和时间的唯一组合,但是在我的javascript中,我需要定义哪个选择被链接到哪个其他选择。如何在RoR嵌套表单中实现链接选择?
我用我的两个概念,教程是这些: http://homeonrails.blogspot.de/2012/01/rails-31-linked-dropdown-cascading.html http://railscasts.com/episodes/196-nested-model-form-revised
但重要的代码基本上是在三个不同的文件:
$(document).ready(function(){
$('select#device_name').chainedTo('select#room_name');
});
此链中选择一个到另一个可呈现在表单模板或field_partial中。
辅助方法是这样的:
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,从部分中呈现html,而咖啡脚本只是用当前的日期时间替换对象的id,所以我可以添加多个关联,而不需要它们具有相同的id。
问题是,如何更改链接的函数的JavaScript,以获得选择框的ID,因为现在我不知道如何创建一个动态JavaScript来接受日期时间coffescript或让javascript搜索它们并改变它自己。
任何帮助或提示将不胜感激!