Module | RubyAMF::Rails::Routing |
In: |
lib/rubyamf/rails/routing.rb
|
The prefered method for parameter mapping in Rails is through the routing file. RubyAMF supports namespacing for controllers and several different syntax styles for better integration into Rails 2 or Rails 3. This module can also be used outside of Rails by including it wherever you want.
Define a parameter mapping
ActionController::Routing::Routes.draw do |map| map.amf :controller => "controller", :action => "action", :params => [:param1, :param2] map.namespace :admin do |admin| admin.amf "controller#action", [:param1, :param2] end end
AmfApplication::Application.routes.draw do |map| map_amf "controller#action", [:param1, :param2] namespace :admin do map_amf "controller#action", [:param1, :param2] end end
include Routing # Namespace is WillBe::Camelized map_amf "controller#action", [:param1, :param2] map_amf "controller#action", [:param1, :param2], {:namespace => "will_be/camelized"} map_amf :controller => "controller", :action => "action", :params => [:param1, :param2], :namespace => "will_be/camelized"
# File lib/rubyamf/rails/routing.rb, line 34 34: def map_amf *args 35: # Rails 2 namespace uses ActiveSupport::OptionMerger, which adds namespace 36: # options to last hash, or passes it as an additional parameter 37: # Rails 3 stores current namespace info in @scope variable 38: 39: # Process args 40: if args[0].is_a?(String) 41: (controller, action) = args[0].split("#") 42: params = args[1] 43: rails2_with_options = args[2] || {} 44: else 45: controller = args[0].delete(:controller) 46: action = args[0].delete(:action) 47: params = args[0].delete(:params) 48: rails2_with_options = args[0] 49: end 50: 51: # Convert controller name to actual controller class name 52: controller = controller.camelize(:upper)+"Controller" unless controller =~ /Controller$/ 53: 54: # Namespace controller name if used 55: modules = if @scope && @scope[:module] 56: # Rails 3 code path 57: @scope[:module].split("/").map {|n| n.camelize(:upper)} 58: elsif rails2_with_options[:namespace] 59: # Rails 2 code path 60: namespaces = rails2_with_options[:namespace].split("/") 61: namespaces.map {|n| n.camelize(:upper)} 62: else 63: [] 64: end 65: modules << controller 66: controller = modules.join("::") 67: 68: RubyAMF.configuration.map_params controller, action, params 69: end