2012-01-28 11 views
14

Mam stronę funkcji, która należy do strony samochodu. Działa to dokładnie tak, jak chcę, z wyjątkiem jednej rzeczy.Szyny ActiveAdmin - zmiana po aktualizacji redirect_to

Po utworzeniu, aktualizacji lub zniszczeniu, chcę, aby strona została przekierowana do admin_car_path(car) zamiast domyślnych admin_car_feature_path(car,feature) do utworzenia i aktualizacji oraz admin_car_features_path(car).

Bezskutecznie szukałem tego.

ActiveAdmin.register Car do 
end 

ActiveAdmin.register Feature do 
    belongs_to :car 
end 

TIA

Odpowiedz

15

Oto kod akcji aktualizacji dla Twojego przypadku. Ten kod przechodzi do pliku features.rb - admin:

controller do 
    def update 
    update! do |format| 
     format.html { redirect_to admin_cars_path } 
    end 
    end 
end 

To przekierowuje do strony indeksu samochodów. Masz pomysł. To samo dotyczy tworzenia i niszczenia akcji.

+0

kolejną dobrą rzeczą w tym podejściu: nie przesłonić błędów walidacji wyświetlane na stronie edycji, gdy obiekt jest nieprawidłowy (jak się obawiałem, ponieważ blok nie rozróżnia, czy jest poprawny czy nie). –

+3

Zamiast "format.html {redirect_to ścieżka_administratora_klatek}" możesz użyć ogólnego podejścia 'format.html {redirect_to collection_path}' –

+0

Dziękuję wam. Przykro mi z powodu późnego potwierdzenia. – Marcelo

0

Marcelo, nie jestem pewien, czy rozumiem pytanie, ale nie będzie to oddanie do update, create i destroy działań w kontrolerze rade?

format.html { redirect_to redirect_address } 

I rób redirect_address, czego potrzebujesz.

8

W chwili obecnej zaakceptowana odpowiedź prowadzi do ignorowania błędów sprawdzania poprawności.

To działa na mnie z najnowszymi wersjami ActiveAdmin i poręcze:

controller do 

    def update 
    update! do |format| 
     format.html { redirect_to collection_path } if resource.valid? 
    end 
    end 

    def create 
    create! do |format| 
     format.html { redirect_to collection_path } if resource.valid? 
    end 
    end 

end 
+0

Otrzymuję ten błąd: development/myproject/app/admin/features.rb: 1: in ' ': undefined method" controller "for main: Object (NoMethodError) co robię źle? –

+0

Przykro mi, post jest z 2014 r., Nie używałem ruby ​​przez 2 lata. – Anri

31

właściwym kodem do aktualizacji bez pomijania walidacji

controller do 
    def update 
    super do |success,failure| 
     success.html { redirect_to collection_path } 
    end 
    end 
end 
+0

Otrzymuję ten błąd: development/myproject/app/admin/features.rb: 1: w ' ': undefined metoda' controller' for main: Object (NoMethodError) co robię źle? –

+0

należy umieścić w ActiveAdmin.register ModelName do bloku końcowego –