class Lolita::Mapping
Create mapping for routes. Each mapping has name, like :posts, :files etc. Also it accepts options:
-
:singular
- singular form for route, by default it call singularize on name. -
:class_name
- class that is related with route, by default it uses :singular, and classify it. It should be like “Post”. -
:path_prefix
- path starts with path prefix, like /path_prefix/lolita/posts. -
:path
- path and path url methods starts with this path.
Example¶ ↑
lolita_for :posts, :path=>"admin" # add paths like this to routes # admin_posts GET /admin/posts {:controller=>"lolita/rest", :action=>:index} # edit_admin_posts GET /admin/post/1/edit {:controller=>"lolita/rest",:action=>:edit}
-
:module
- change module for path, it changes :controller that is used for lolita, like,:module=>"admin"
, change controller to “admin/posts”. If this is used without :path then no named routes will be generated
Instances of this class is used all over the Lolita
, this class itself represent what name does resource has, what controller to use, what model is related with it and so on. This is used to generate urls and paths. Also eahc request containers information with mapping related to it.
Attributes
Public Class Methods
# File lib/lolita/mapping.rb, line 25 def initialize(name,options={}) # TODO how it is when lolita plugin extend default path and there is module is this not break the logic? @as = options[:as] @title = options[:title] @to = options[:to].is_a?(String) ? options[:to].constantize : options[:to] @visible = options.keys.include?(:visible) ? options[:visible] : true @append_to = options[:append_to] @only = options[:only] || nil @plural = (options[:as] ? options[:as] : name).to_sym @singular = (options[:singular] || @plural.to_s.singularize).to_sym @class_name = (options[:class_name] || name.to_s.classify).to_s @ref = @class_name.to_s.camelize @path_prefix = options[:path_prefix] @path = (options[:path] || "lolita").to_s @module = options[:module] @default_mod = @module || "lolita" @controllers = Hash.new{|h,k| h[k]=options[:controller] || "#{!@module && "lolita/"}#{k}" } end
Public Instance Methods
# File lib/lolita/mapping.rb, line 46 def controller "#{@default_mod}#{@default_mod && "/"}#{@plural}" end
full path of current mapping
# File lib/lolita/mapping.rb, line 56 def fullpath "#{@path_prefix}/#{@path}".squeeze("/") end
Return class that is related with mapping.
# File lib/lolita/mapping.rb, line 51 def to @to || (@ref.constantize rescue nil) end
# File lib/lolita/mapping.rb, line 60 def url_name #TODO test what with namespace "#{@path}_#{@plural}" end