Hej,
W moim projekcie mam pole state w modelu hardware które może przyjmować kilka wartości: registered, moved, forwarded.
Dodaję do projektu gem act_as_state_machin.
W routes mam:
...
resources :hardwares do
member do
get 'move'
get 'forward'
end
end
...
w modelu natomiast dodałem:
...
include AASM
aasm column: :status do
state :registered, initial: true
state :moved
state :forwarded
event :move do
transitions from: :registered, to: moved
end
event :forward do
transitions from: :moved, to: :forwarded
end
end
...
i w kontrolerze mam:
...
def move
@hardware.move!
end
...
Po wejściu na adres hardwares/1/move
status już jest ustawiony bez kliknięcia w update ( a ma się oczywiście ustawiac po kliknięciu w update)
a po kliknięciu w update wyświetla się błąd:
param is missing or the value is empty: hardware
# Never trust parameters from the scary internet, only allow the white list through.
def hardware_params
params.require(:hardware).permit(:name, :status)
end
end
Jeśli dam @hardware.move bez wykrzyknika to status się nie zmienia a błąd powyższy się wyświetla.
w before_action dodałem też :move do before_action.
Efekt ma być taki, że po wejściu na adres hardwares/1/move dodkonuje edycji pewnych pól i po save status tego urządzenia zmienia się na moved.
Cieżko też znaleśc jakiś przykład. Na railscasts jest ale tam tylko ogólny przeglą state machine gems bez połączenia zkontrolerem widokiem i modelem.
Jak poradzić sobie z tym błędem który się wyświetla?
Gdzie powinno być umieszczone @hardware.move w kontrolerze? A mozę w modelu?
Proszę o pomoć bo to moja pierwsza przygoda ze AASM.
Pozdrawiam