You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by Tong Li <li...@us.ibm.com> on 2011/08/24 22:11:12 UTC

Question on image_url

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?

Thanks.

Tong Li
Emerging Technologies & Standards
B062/K317
litong01@us.ibm.com

Re: Question on image_url

Posted by David Lutterkort <lu...@redhat.com>.
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