Problem z wyszukiwaniem

do wyświetlenia numeru używam w modelu

def to_param "#{month.strftime("%m-%Y")}" end
który zmienia mi id numeru z np /numbers/4 na format np: numbers/01-2009 (świetnie ! :slight_smile: )
( tylko jeden numer w miesiącu zawsze będzie występował)
natomiast mam problem z napisaniem wyszukiwania w akcji show tak żeby do @numbers
( month jest typem pola datetime i dlatego chciałem uprościć adres url zeby nie było zbędnych śmieci typu 00-00-00 etc.)

@number = Number.find(:first, :conditions => [ “???” ])

ogólnie chodzi mi o to zeby
z params[:id] w którym jest data w formacie 01-2009 zrobić datę w formacie 2009-01-01
wyszukiwanie np: @number = Number.find(:first, :conditions => {:month => ‘2011-08-01’}) jak najbardziej działa chodzi tylko o
zmianę kolejności roku z miesiącem oraz dodania do tego stringu? -01 i sklejenie wszystkiego w rrr-mm-01

To powinno pomóc

>> Date.parse('01-2009').to_s => 2009-01-01

rozwązanie dzięki jednemu z userów tego forum :slight_smile: pozdrawiam :))
dla potomnych ->

<%= @number = Number.find(:all, :conditions => {:month =>DateTime.parse(params[:id])}) %>

Railsy wykorzystują architekturę MVC, a w MVC takich rzeczy nie powinieneś robić w widoku. @number inicjujesz w kontrolerze, w widokach wykorzystujesz już zainicjowaną zmienną

Kontroler:

def index @number = Number.all(:conditions => {:month =>DateTime.parse(params[:id])}) end
Widok

  <%= @number %>

i tak będzie :slight_smile:

mała poprawka,

>> Date.parse('01-2009').to_s => "2009-09-01"
jak widać tutaj tkwił błąd chodziło mi nie o 2009-09-01 tylko o 2009-01-01 rozwiązanie okazało się banalnie proste

@number = Number.all(:conditions => {:month =>DateTime.parse("01-"+params[:id])})

błąd tkwił w braku “01-”+ dlatego w akcji edit działy się cuda raz wyświetlał raz nie a głównym problemem bło to iż
poprawnie przekazywał rok jednak misiąć był już z kosmosu a raczej z kalendarza :slight_smile: pozdrawiam :slight_smile:

[quote=czACha]>> Date.parse('01-2009').to_s => "2009-09-01"
jak widać tutaj tkwił błąd chodziło mi nie o 2009-09-01 tylko o 2009-01-01 rozwiązanie okazało się banalnie proste

@number = Number.all(:conditions => {:month =>DateTime.parse("01-"+params[:id])})

[/quote]
Trochę bardziej elegancko możesz to zrobić w ten sposób

  @number = Number.all(:conditions => {:month =>DateTime.parse(params[:id]).change(:day => 1) })