On Wed, 2011-08-24 at 16:11 -0400, Tong Li wrote:
> deltacloud uses haml, in some of the haml file such as
> views/images/index.html.haml, a line of code looks like this
>
>
> = link_to image.id, image_url(image.id)
>
> method link_to is defined in url_helper.rb, but I can not find where
> image_url is defined and how it can be made available so that haml file can
> use it. can any one shed some light?
This is part of the magic that rabbit does. When a collection :things is
set up, rabbit creates helpers, that basically amount to the following
Ruby code
def things_url(params={})
"/api/foos" + query_params(params)
end
def thing_url(id, params={})
"/api/foos/#{id}" + query_params(params)
end
# For every operation OP in the collection that is
# not :index or :show, e.g. for :destroy
if OP is member operation
def OP_thing_url(id, params={})
foo_url(id, params)
end
else
def OP_thing_url(params={})
foos_url(params)
end
end
def query_params(params)
return "" if params.empty?
"?" + params.keys.map { |k| "#{k}=#{params[k]}" }.join("&")
end
David