Redirect_to Vs Render_component

Srividya Sharma wrote:

Hello
I am using Rails 2.2.2.
Here is my problem:
I have a controller action which will receive several parameters,
validate them, process them and create a new set of parameters out of
them.
Then, this controller should delegate the task to another controller
action based on some values and pass these processed parameters to it. I
have stored the processed parameters in a hash. (there are many of them)

I could only see two options to achieve this:
1. Use redirect_to and pass each parameter as a string.
2. Use render_component and pass the parameters as a hash.

I have seen that render_component is not recommended in most cases. Is
it recommended solution for this case? I think render_component slows
down the request also.
Which option is right for me?
Are there any other ways to achieve this? Please guide me.

If you don't want the browser url to change, you can just call
the other action like a method, passing the parameters in either
an instance variable or a method parameter (that's default nil
to allow it to be called externally). Or are you messing with
params directly?

This is assuming the other method is in the same controller.
If it isn't, you'll have to make the other method available
within the first controller, either through inheritance or
mix-ins.

Srividya,
The way I have been doing this rather quick and dirty but it works.
Basically, you want to communicate between two HTTP requests. One of
the most useful facilities in Rails is flash which is a special member
of the session hash. It is special in the sense that it is
temporary. By default, it will retain the values stored in it across
two request and then it discards them automatically. Easy solution,
just stuff the hash in the flash which itself is a hash anyway and
retrieve it in any action that you desire. It has worked very well
for me.
Bharat

So, I should use redirect_to and use flash for passing the hash.
Can you give me code snippet?

Thanks a lot.

Bharat Ruparel wrote:

1. place where you want to save your hash:

flash[:my_hash] = some_hash

2. place where you want retrieve your saved hash in flash:

this_hash = flash[:my_hash]

Now this_hash has your saved data.

Bharat

I tried render_component, it seems to be slow.
Thanks a lot. I will give this a try.

Bharat Ruparel wrote: