2012-01-28 14 views
14

Tengo una página de funciones que pertenece a la página Car. Eso está funcionando exactamente como quiero, excepto por una cosa.Rails ActiveAdmin: cambie la actualización posterior a redirect_to

Después de crear, actualizar o destruir, quiero que la página sea redirigido a la admin_car_path(car) en lugar de los valores predeterminados admin_car_feature_path(car,feature) para crear y actualizar y admin_car_features_path(car).

No lo busqué con éxito.

ActiveAdmin.register Car do 
end 

ActiveAdmin.register Feature do 
    belongs_to :car 
end 

TIA

Respuesta

15

Aquí está el código para la acción de actualización para su caso. Este código va a las características.rb - archivo de administración:

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

Esto redirige a la página de índices de autos. Entonces tienes la idea. Lo mismo para crear y destruir acciones.

+0

otra cosa buena acerca de este enfoque: no anula los errores de validación se muestra en la página de edición cuando el objeto no es válido (ya que temía que lo hiciera ya que el bloque no distingue si es válido o no). –

+3

En lugar de 'format.html {redirect_to_cars_cars_admin}' puedes usar el enfoque genérico 'format.html {redirect_to collection_path}' –

+0

Gracias chicos. Lo siento por la confirmación tardía. – Marcelo

0

Marcelo, no estoy seguro de entender su pregunta, pero no iba a poner esto en las acciones update, create y destroy en su controlador hacer el truco?

format.html { redirect_to redirect_address } 

Y haz redirect_address lo que necesites.

8

En el momento actual, la respuesta aceptada conduce a ignorar los errores de validación.

Esto funciona para mí con las últimas versiones de ActiveAdmin y rieles:

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

Recibo este error: desarrollo/myproject/app/admin/features.rb: 1: en ' ': método indefinido' controller' para main: Object (NoMethodError) lo que estoy haciendo ¿incorrecto? –

+0

Lo siento, la publicación es de 2014, no he usado ruby ​​desde hace 2 años. – Anri

31

código correcto para la actualización sin saltarse la validación

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

Recibo este error: desarrollo/myproject/app/admin/features.rb: 1: en ' ': método indefinido' controller' para main: Object (NoMethodError) lo que estoy haciendo ¿incorrecto? –

+0

debe colocarse dentro de ActiveAdmin.register ModelName do end block –

Cuestiones relacionadas