Problem z wywołaniem dodatkowej metody

Weekday jest obiektem typu Day, posiada pole z datą. W view chcę stworzyć link, który w wywoła zdefiniowaną przeze mnie w Days_controllerze funkcję changedaystate. Chciałbym aby do tej funkcji przekazany został parametr w postaci daty. jak to zrobić? czy poniższe wywołanie jest poprawne?


link_to( “24”, changedaystate_url(:date => weekday.date ))

Po drodze próbowałem różnych rzeczy, natrafiłem między innymi na problemy z routem, czy muszę coś tam dopisać, żeby działało?

druga sprawa to problem z samą metodą changedaystate, która nie działa tak jak się spodziewam. oto jak ona wygląda:


def changedaystate
if (fday = Day.find(:first, :conditions => [ “date = ?”, params[:date] ]))
case fday.date
when 2: fday.update_attribute(:state, 3)
when 3: fday.update_attribute(:state, 2)
end

else

	Day.new(:date => params[:date], :state => 2)

end

redirect_to_index

end

niestety funkcja nawet nie próbuje znaleźć obiektu, nie tworzy też nowego. wykonuje jedynie redirect. czy przyczyną może być niewłaściwie przekazany parametr? może chodzi o jego format? a może problem jest w route?
jak należy wywołać tę funkcję i przekazać jej parametr, żeby zadziałała? Proszę o pomoc i sugestie.

Co do pierwszej części to warto zajrzeć do api ActionView::Helpers::DateHelper Sądzę, że można znaleźć tam coś sensownego.

Co do drugiej, to mam przede wszystkim uwagę do dotychczasowej implementacji:

case fday.date when 2: fday.update_attribute(:state, 3) when 3: fday.update_attribute(:state, 2) end
To na pewno nie powinno znaleźć się w kontrolerze, tylko w modelu (można np. zrobić funkcję toggle_state).
Jeśli zamierzasz używać wielu stanów, które posiadają złożoną strukturę przejść, to warto skorzystać z pluginu acts_as_state_machnie