У меня есть этот код в моем контроллере Rails 3:
def index
now = Time.now.utc.strftime("%m%d")
redirect_to :action => "show", :id => now
end
def show
begin
@date = Time.parse("12#{params[:id]}")
dbdate = params[:id]
rescue ArgumentError
@date = Time.now.utc
dbdate = @date.strftime("%m%d")
end
@date = @date.strftime("%B %d")
@events = Event.events_for_date(dbdate)
end
Таким образом, по сути, index - это просто специализированная версия show, поэтому я хочу, чтобы он выполнял show, отображая представление show.html.erbно я не хочу изменить URL, как это делает redirect_to.
Я пробовал этот подход:
def index
now = Time.now.utc.strftime("%m%d")
params[:id] = now
show
render :action => "show"
end
Теперь это работает, но просто плохо пахнет.
Я новичок в Ruby и Rails, поэтому мне просто интересно, есть ли что-то принципиально неправильное или есть лучший способ сделать это?