我有一个辅助函数,可以使用新地址向new_order
表单添加字段。
def link_to_add_address_fields(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 partial: 'orders/order_address_fields', locals: {a: builder}
end
content_tag :div, class: 'form-group add_new_address_links' do
content_tag :div, class: 'row' do
content_tag :div, class: 'col-lg-12' do
link_to 'Add new address', 'javascript:void(0)', class: 'btn btn_new_address', data: {id: id, fields: fields.gsub('\n', '')}
end
end
end
end
因此,当用户点击btn_new_address
链接时,orders/order_address_fields
部分的新地址字段会以形式显示。
这是orders/order_address_fields
部分:
.form-group.new_order_address_fields
.row
.col-lg-10
= a.text_field :street, class: 'form-control new_order_street'
= a.text_field :building, class: 'form-control new_order_building'
= a.text_field :entrance, class: 'form-control new_order_entrance'
= link_to '<i class="fa fa-remove"></i>'.html_safe, 'javascript:void(0)', class: 'btn btn-default remove_address'
.col-lg-2.hidden-xs
= link_to '<i class="fa fa-map-marker"></i>'.html_safe, 'javascript:void(0)', class: 'btn btn-default full-size find_me_on_map'
但是当用户点击它时,有一个find_me_on_map
链接,它运行一个JS函数。这是来自orders.coffee
jQuery.fn.clickOnFindMeOnMapButton = ->
$(this).click ->
street_field = $(this).parent('div').parent('div').find('input.new_order_street')
building_field = $(this).parent('div').parent('div').find('input.new_order_building')
findMeOnMap(street_field, building_field)
ready = ->
$('a.find_me_on_map').clickOnFindMeOnMapButton()
$(document).ready(ready)
$(document).on('page:load', ready)
它适用于带有一个地址字段的新加载页面,但是当我添加另一个字段时,我需要将此函数应用于新加载的地址字段的find_me_on_map
链接。我不知道,怎么做。
感谢您的帮助!
答案 0 :(得分:1)
你需要实时更改,在新的jquery中你可以这样做:
$(document).on 'click', 'a.find_me_on_map' ->
# call function