# File lib/korgi/named_route_filter.rb, line 58 def primary_key configured_value(:primary_key) || :id end
class Korgi::NamedRouteFilter
Attributes
id[R]
target[R]
Public Class Methods
new(doc, context = nil, result = nil)
click to toggle source
Calls superclass method
# File lib/korgi/named_route_filter.rb, line 10 def initialize(doc, context = nil, result = nil) super doc, context, result @target, @id = nil end
Public Instance Methods
call()
click to toggle source
# File lib/korgi/named_route_filter.rb, line 15 def call doc.to_s.gsub(pattern) { replace(Regexp.last_match) } end
Private Instance Methods
configured_value(key)
click to toggle source
# File lib/korgi/named_route_filter.rb, line 46 def configured_value(key) Korgi.config.named_routes[target.to_sym][key] end
controller()
click to toggle source
# File lib/korgi/named_route_filter.rb, line 50 def controller configured_value(:controller) end
find_object()
click to toggle source
# File lib/korgi/named_route_filter.rb, line 36 def find_object primary_key == :id ? id : klass.find(id).send(primary_key) rescue ActiveRecord::RecordNotFound id end
klass()
click to toggle source
# File lib/korgi/named_route_filter.rb, line 54 def klass Object.const_get(configured_value(:model)) end
pattern()
click to toggle source
# File lib/korgi/named_route_filter.rb, line 21 def pattern %r{\$#([\w]+).([\d]+)\$} end
primary_key()
click to toggle source
replace(matches)
click to toggle source
# File lib/korgi/named_route_filter.rb, line 25 def replace(matches) origin, @target, @id = matches.to_a valid_target? ? resource_url : origin rescue ActionController::UrlGenerationError origin end
resource_url()
click to toggle source
# File lib/korgi/named_route_filter.rb, line 32 def resource_url url_for(controller: controller, action: "show", id: find_object, only_path: true) end
valid_target?()
click to toggle source
# File lib/korgi/named_route_filter.rb, line 42 def valid_target? Korgi.config.named_routes.key?(target.to_sym) end