Customize URL

Hi,
in my ruby application I manage a MySQL db.
The url are generated by the classic command line link_to or url_for.

For image I use the command:

<img src="<%= url_for(:action=>“picture”, :id=>@pictures.id)-%>" …

so the URL generated is:

/view/picture/500

I would like to generate an URL like this one:

/view/picture/500/neroburning.jpg

Can you help me?

Thank you very much!

I don’t see the point to use url_for in image :S:S

Take a look at image_tag :smiley:

image_tag(“icon.png”) # =>
Icon

image_tag(“icon.png”, :size => “16x10”, :alt => “Edit Entry”) # =>
Edit Entry

image_tag("/icons/icon.gif", :size => “16x16”) # =>
Icon

Hi,
thank for your answer but I need to know the answer to my question
because the images of my site load from the db!
Can you help me to write:

/picture/500-neroburning.jpg

or

/view/picture/500/neroburning.jpg

instead of the simple:

/view/picture/500

Thanks

On 10/11/07, Luigi [email protected] wrote:

Hi,
thank for your answer but I need to know the answer to my question
because the images of my site load from the db!
Can you help me to write:

/picture/500-neroburning.jpg

Google for acts_as_sluggable

On 10/11/07, Bob S. [email protected] wrote:

Oh wait a minute. Are you wanting the .jpg so the browser will treat
it as an image? If so, you need to be setting the correct content type
on your response. What does your controller action look like? How are
you sending the image?

On Oct 11, 2007, at 7:29 PM, Bob S. wrote:

Google for acts_as_sluggable

Oh wait a minute. Are you wanting the .jpg so the browser will treat
it as an image? If so, you need to be setting the correct content type
on your response. What does your controller action look like? How are
you sending the image?

Look at the Rails doc for “send_data” (or send_file)

-Rob

Rob B. http://agileconsultingllc.com
[email protected]

Hi,
my problem isn’t the loading of image from db.
I already use send_data etc… and the browser works properly.
The matter is that the compiling of url of ruby isn’t friendly for the
search engine spider because it is written like this:

/view/picture/500

I would like to customize the url, also those not referring to images,
like this:

/view/picture/500/neroburning.jpg

or

/picture/500-neroburning.jpg

The site is softwarewin.net.

Thank you!

On 10/12/07, Luigi [email protected] wrote:

Hi,
my problem isn’t the loading of image from db.
I already use send_data etc… and the browser works properly.
The matter is that the compiling of url of ruby isn’t friendly for the
search engine spider because it is written like this:

/view/picture/500

In that case, look at acts_as_sluggable. Or create a route that
includes the picture name.

Hi,
I had written a site in ruby…but I don’t know how to use the
plugins…
How can I use acts_as_sluggable on my webhosting?

Thank you very much!

Luigi wrote:

I would like to customize the url, also those not referring to images,
like this:

/view/picture/500/neroburning.jpg

or

/picture/500-neroburning.jpg

The easiest way is to overwrite the to_param method in your model.
Example:

class Image

def to_param
%{#{ id }-#{ filename }}
end

end

So you’d get something like this in your URL:

23-neroburning.jpg

Daniel W. wrote:

Luigi wrote:

I would like to customize the url, also those not referring to images,
like this:

/view/picture/500/neroburning.jpg

or

/picture/500-neroburning.jpg

The easiest way is to overwrite the to_param method in your model.
Example:

class Image

def to_param
%{#{ id }-#{ filename }}
end

end

So you’d get something like this in your URL:

23-neroburning.jpg

Note that you must pass in the object itself when generating links:

link_to(image_tag(…), :action => ‘…’, :id => image) # Good
link_to(image_tag(…), :action => ‘…’, :id => image.id) # Bad

But is this way slower than the search by the sample id?

I’m going on solution:

to do other similar modify I have used the routes.rb:

map.software ‘view/:id/software/:title’,
:controller=>‘view’,
:action=>‘software’

in view.rhtml I’m using:

href="<
%=software_url(:id=>guide.id,:title=>guide.title.split.join("-"))-%>"

that generate:

…/view/92/software/Spyware-Doctor

so I can introduce the name of the software separated by “/”.
This way will work also for “picture”.

The fantastic thing is that routes.rb works also if I write:

map.software ‘view/:id/software/:title.html’,
:controller=>‘view’,
:action=>‘software’

so the generated url becames:

…/view/92/software/Spyware-Doctor.html

It’s great!