2 votes

ActiveAdmin Redirect After Create ?

Dans activeadmin, j'aimerais savoir comment rediriger vers une url avec un paramètre après la création d'un enregistrement ?

Jusqu'à présent, j'ai le code suivant qui fonctionne sauf que "event_id" est vide.

Eg :

http://0.0.0.0:3000/admin/events/new?event_id=369877

Code

  controller do
    def create
      create! do |format|
        parameters = Rack::Utils.parse_query URI(request.referrer).query
        format.html { redirect_to '/admin/events?q[espn_event_id_equals]='+ parameters['espn_event_id'].to_s }
      end
    end
  end

Il redirige vers :

http://0.0.0.0:3000/admin/events?q[event_id_equals]=

au lieu de

http://0.0.0.0:3000/admin/events?q[event_id_equals]=369877

Merci d'avance

SOLUTION

La solution consistait à analyser l'URL à partir de request.referrer pour obtenir le paramètre souhaité.

  controller do
    def create
      create! do |format|
        parameters = Rack::Utils.parse_query URI(request.referrer).query
        format.html { redirect_to '/admin/events?q[espn_event_id_equals]='+ parameters['espn_event_id'].to_s }
      end
    end
  end

Merci pour vos suggestions : )

3voto

zeantsoi Points 11747

Tout d'abord, essayez d'associer le paramètre à un symbole plutôt qu'à une chaîne de caractères :

format.html { redirect_to '/admin/events?q[event_id_equals]='+ params[:event_id].to_s }

Si cela ne fonctionne pas, cela signifie (plus probablement qu'autrement) que params[:event_id] es nil . Parce que nil.to_s est une chaîne vide, rien n'est ajouté au chemin spécifié.

1voto

Votre structure est un peu confuse. Mais je pense que c'est assez simple :

format.html { redirect_to admin_events_path(q[event_id_equals]: params[:event_id]) }

si cela ne fonctionne pas, c'est probablement parce qu'il ne peut pas lire q[event_id_equals] comme symbole, dans ce cas vous devriez essayer : admin_events_path("q[event_id_equals]" => params[:event_id])

Il y a probablement de meilleures façons de nommer et de contrôler ces éléments, mais cela vous permettra certainement d'arranger les choses.

Pour active_admin 1.0.0.pre2 :

format.html { redirect_to admin_events_path('q[event_id_eq]': params[:event_id]) }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X