On Oct 26, 2009, at 6:50 AM, George Adamson wrote:
> Is this a job for a helper method? Named routes? Other?
>
Here's the helpers that I use (in app/helpers/global_helpers.rb):
module Merb
module GlobalHelpers
# parent is an Array of model instances or nil
def rest_resource(parent, *args)
rsrc = nil
if parent.nil?
rsrc = resource(*args)
else
rsrc = resource(*([parent].flatten + (args || [])))
end
rsrc
end
end
end
Then to use it in views:
#actions
%ul
%li= show_btn(rest_resource(@parent, @resource), 'Show')
unless(@parent.nil? && @resource.nil?)
%li= new_btn rest_resource(@parent, :appointments, :new), 'New
Appointment'
and in controllers:
def destroy
debug 'destroy'
get_parent
if get_resource.destroy
redirect rest_resource(@parent, controller_name.to_sym)
else
raise InternalServerError
end
end
def get_parent
if @parent.nil?
params.each do |k, v|
if k.to_s =~ /(.+)_id/
@parent ||= []
@parent << find_resource($1.camel_case, v)
end
end
end
@parent
end
def find_resource(class_name, id)
resource = Kernel.const_get(class_name).get!(id)
instance_variable_set(:"@#{class_name.snake_case}", resource)
end
One big advantage with this approach is now routes.rb is the single
point for nesting knowledge.
HTH,
Roy
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"merb" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/merb?hl=en
-~----------~----~----~----~------~----~------~--~---