redirect_to with a hash instead of parameters


I have numerous places in my codebase like this:

   redirect_to :action => 'schedule_by_uid_and_run_date', :uid => @schedule.first.train_uid, :year => @date.year, :month => @date.month, :day =>

I'd like to replace the :year, :month and :day parameters with a hash containing the three parameters. @date is an instance of a Date class, and the trouble with that is Date.month is a single character. I'd like it to be null-padded, but it seems messy to put .rjust(2, '0') against all three parameters everywhere in the code.

Is it possible to do something like this?

   redirect_to :action => 'foo', :uid => @schedule.first.train_uid, params_hash

...where params_hash contains { :year => '2011', :month => '01', :day => '19' }


Peter assuming you use rails 3.1

this might work :

redirect_to {:action => ‘foo’, :uid => @schedule.first.train_uid, params_hash}.merge(param_hash)

Ahmy Yulrizka

sorry redirect_to {:action => ‘foo’, :uid => @schedule.first.train_uid}.merge(param_hash)

Ahmy Yulrizka

I think I tried that already, but I'll give it a go.

I settled on...

  redirect_to :action => 'foo', :uid => ..., nil => param_hash

...but I'm not sure if it feels horribly dirty or elegantly smart.



# create virtual models
# year_entry.rb

  attr_accessor :year,

# controller:

  @year_entry_access = []
    year_var =
    year_var.year = 2012
    year_var.month = 1 = 20
  @year_entry_access << year_var

  redirect_to :action=>show_rrr,:year_entry_access =>@year_entry_access

# After that you can pass other method

def show_rrr
if params[:year_entry_access] # here you can get params_hash format
  params[:year_entry_access].each_value do |get_date|

# you can access like this way "get_date[:date]"