Passing parameter automatically to links

Hi there

Is it possible to pass a parameter automatically to every rails generated link?

for example:

I have the parameter site_id which is passed via url (www.example.com/:site_id/:controller/:action/:id)

is it possible to automatically pass the :site_id to all links/paths like f.i. "articles_path", "article_path(@article)" or is the only way to do this by passing the parameter in addition: "articles_path(:site_id=>params[:site_id])" or "article_path(@article, :site_id=>params[:site_id])".

Thanks for your answers

Regards sigma

I don't know the answer but if you are simply passing it backwards and forwards in order to persist it then you might be better off using the session. (session[:site_id] = ...)

Colin

Hi

thanks, but this is not really what i'm looking for. I looking for a solution to (re-)pass a given parameter to all rails generated links.

sigma

[Please quote when replying.]

Christoph Thommen wrote:

Hi

thanks, but this is not really what i'm looking for. I looking for a solution to (re-)pass a given parameter to all rails generated links.

And why won't a session variable do the trick? It seems to me that Colin is right.

You *could* override some of the UrlWriter functions, but you really, really want a session variable, unless there's something I don't understand here.

sigma

Best,

Hi

Ok, sessions seems to be right, but not what I'm looking for :slight_smile:

This parameter is not static, it is dynamic. the whole thing is for a CMS where the ":site-id" tells where the user stands in the navigation and what's the site title,... So it would be much better to pass this by url.

sigma

Hi

Ok, sessions seems to be right, but not what I'm looking for :slight_smile:

This parameter is not static, it is dynamic. the whole thing is for a CMS where the ":site-id" tells where the user stands in the navigation and what's the site title,... So it would be much better to pass this by url.

I would suggest that if you are using it for context information (where the user is now) then the session is exactly the right place to put it. Just update the session each time the value changes. A URL is for indicating what to do next, not passing where you are at the moment.

By the way it is generally preferred not to top post on this list, it is easier to follow a thread if you insert your comments inline in the previous message. Thanks.

Colin

> Hi

> Ok, sessions seems to be right, but not what I'm looking for :slight_smile:

> This parameter is not static, it is dynamic. the whole thing is for a > CMS where the ":site-id" tells where the user stands in the navigation > and what's the site title,... So it would be much better to pass this > by url.

I would suggest that if you are using it for context information (where the user is now) then the session is exactly the right place to put it. Just update the session each time the value changes. A URL is for indicating what to do next, not passing where you are at the moment.

By the way it is generally preferred not to top post on this list, it is easier to follow a thread if you insert your comments inline in the previous message. Thanks.

Colin

Hi

I think you didn't understand what I mean... Every Controller is something like a module in this cms. so you can put such a module on different places on the website.

so you have a navigation, which points to a module (contoller) and a certain place, where this module is placed within the navigation. In this case the URL should also contain the site-id (navigation-id) in order to find out which content of the module is part of this navigation item. So you can't pass this via session.

For example: we habe a news-module which is placed on the home page (site_id = 1) and under "about > blog" (site_id = 99). so the url would look like this: www.example.com/1/news for the home page and www.example.com/99/news for the "about > blog" page.

and this you can't pass by session.

sigma

ActionController::default_url_options ?

Fred

Hi Fred

This is exaclty what I'm looking for! Thank you