Sha256: bbf46d68423190e0668b1721490054154c63bb3708cdc62825c1c64619e1f563

Contents?: true

Size: 1.55 KB

Versions: 1

Compression:

Stored size: 1.55 KB

Contents

module BestInPlace
  module BestInPlaceHelpers
    def best_in_place(object, field, opts = {})
      opts[:type] ||= :input
      opts[:collection] ||= []
      opts[:nil] ||= "-"
      field = field.to_s
      value = object.send(field).blank? ? opts[:nil].to_s : object.send(field)
      collection = nil
      if opts[:type] == :select && !opts[:collection].blank?
        v = object.send(field)
        value = Hash[opts[:collection]][!!(v =~ /^[0-9]+$/) ? v.to_i : v]
        collection = opts[:collection].to_json
      end
      if opts[:type] == :checkbox
        fieldValue = !!object.send(field)
        if opts[:collection].blank? || opts[:collection].size != 2
          opts[:collection] = ["No", "Yes"]
        end
        value = fieldValue ? opts[:collection][1] : opts[:collection][0]
        collection = opts[:collection].to_json
      end
      out = "<span class='best_in_place'"
      out += " id='best_in_place_" + object.class.to_s.gsub("::", "_").underscore + "_#{field}"
      out += " data-url='" + (opts[:path].blank? ? url_for(object).to_s : url_for(opts[:path])) + "'"
      out += " data-object='" + object.class.to_s.gsub("::", "_").underscore + "'"
      out += " data-collection='#{collection}'" unless collection.blank?
      out += " data-attribute='#{field}'"
      out += " data-activator='#{opts[:activator].to_s}'" unless opts[:activator].blank?
      out += " data-type='#{opts[:type].to_s}'>"
      out += value.to_s
      out +=  "</span>"
      raw(out)
    end
  end
end


ActionView::Base.send(:include, BestInPlace::BestInPlaceHelpers)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
best_in_place-0.1.5 lib/best_in_place.rb