从Rails helper调用JS函数

时间:2015-08-03 20:49:28

标签: javascript jquery ruby-on-rails ruby-on-rails-4

我有一个辅助函数,可以使用新地址向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链接。我不知道,怎么做。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

你需要实时更改,在新的jquery中你可以这样做:

$(document).on 'click', 'a.find_me_on_map' ->
  # call function