Sha256: fa18a2efdc9129b054eed299fae43c47ed534a0aab908d121923925cae8d5f70
Contents?: true
Size: 1.2 KB
Versions: 1
Compression:
Stored size: 1.2 KB
Contents
module ActsAsLinkable module ActiveRecordExtensions def acts_as_linkable(opts={}, &block) class_eval "def link_attr; #{opts.inspect}; end;" end end module ActionViewExtensions def link(obj, options={}, html_options={}) raise "I can't link to nil." unless obj if (obj.class == Array) || (obj.class == ActiveRecord::Relation) obj.map{|v| link(v)}.to_sentence else p = obj.link_attr p[:partial] = "#{obj.class.name.tableize}/link" if p.empty? unless p[:partial].nil? obj_name = (p[:object_name] ||= obj.class.name.underscore).to_s.to_sym (render :partial => p[:partial], :locals => {obj_name => obj}).strip else name = obj.link_attr[:name] link_attr.except(:name).each do |key, val| html_options[key] ||= obj.send(val) if val.class==Symbol end url = self.send("#{obj.class.name.tableize}_path", obj, options.except(:remote)) link_to name, obj, html_options, :remote => options[:remote]||true end end end end end ActiveRecord::Base.extend(ActsAsLinkable::ActiveRecordExtensions) ActionView::Base.send :include, ActsAsLinkable::ActionViewExtensions
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
casey_jones-0.0.108 | lib/acts_as_linkable/acts_as_linkable.rb |