2017-03-16 5 views
0

J'ai créé l'application rails 5 et j'ai le code suivant dans le contrôleur et les vues pour montrer les messages flash. J'ai vu beaucoup de questions de ce genre mais je n'ai pas pu résoudre le problème.Rails 5 flash ne fonctionne pas pour la redirection

côté contrôleur

respond_to do |format| 
     if @trigger.update(trigger_params) 
     flash[:success] = 'Trigger was successfully updated.' 
     format.html { redirect_to edit_project_trigger_path(@trigger, project_secret_key: @project.secret_key) } 
     format.json { render :show, status: :ok, location: @trigger } 
     else 
     error = '' 
     @trigger.errors.full_messages.each do |msg| 
      error += "#{msg} <br>" 
     end 
     flash.now[:error] = error 
     format.html { render :new } 
     format.json { render json: @trigger.errors, status: :unprocessable_entity } 
     end 
    end 

vue latérale

<% if flash[:error].present?%> 
    <div class="alert alert-danger alert-message alert-message-common" role="alert"> 
     <%= flash[:error].html_safe %> 
    </div> 
<% end %> 
<% if flash[:notice].present? %> 
    <div class="alert alert-success alert-message alert-message-common" role="alert"> 
     <%= flash[:notice].html_safe %> 
    </div> 
<% end %> 
<% if flash[:alert].present? %> 
    <div class="alert alert-danger alert-message alert-message-common" role="alert"> 
     <%= flash[:alert].html_safe %> 
    </div> 
<% end %> 
<% if flash[:success].present?%> 
    <div class="alert alert-success alert-message alert-message-common" role="alert"> 
     <%= flash[:success].html_safe %> 
    </div> 
<% end %> 

Il est spectacle lors de l'utilisation d'alerte mais les messages de succès ne sont pas représentés. Y at-il un problème dans les rails 5 ou tout problème dans mon code?

J'espère que le travail d'alerte en raison de rendu de page et le succès ne fonctionne pas en raison de la redirection.

+0

Vous ne définissez pas une valeur 'flash [: succès]' dans le code que vous nous témoignez ... est-il plus de code que cela? dans quelles circonstances vous attendriez-vous à voir quelque chose dans 'flash [: succès]'? –

+0

@TarynEast Je veux montrer le message de succès une fois les données mises à jour avec succès en db. J'ai été utilisé flash [: avis] et flash [: succès] dans le même but. – anandh

+0

1. Changer la classe css pour tous les types en alerte-danger (Puisque l'alerte fonctionne) à des fins de test. 2. Ensuite, essayez ceci [solution] (http://stackoverflow.com/questions/42013906/why-redirects-from-a-null-session-action-wont-support-flash-in-rails/42017336#42017336). – Omkar

Répondre

0

Essayez

format.html { redirect_to edit_project_trigger_path(@trigger, project_secret_key: @project.secret_key), notice: 'Trigger was successfully updated.' } 

Vue latérale:

<% if alert %> 
    <div class="alert dark alert-icon alert-danger alert-dismissible" role="alert" id="alert"> 
     <%= alert %> 
    </div> 
<%end%> 

<% if notice %> 
    <div class="alert dark alert-icon alert-success alert-dismissible" role="alert" id="notice"> 
     <%= notice %> 
    </div> 
<%end%> 
+0

Je vais vérifier. – anandh

+0

Il y a erreur de syntaxe, ne fonctionne pas – anandh

+0

essayez format.html {redirect_to modifier_project_trigger_path (@trigger, project_secret_key: @ projet.secret_key), succès: 'Trigger a été mis à jour avec succès.' } – puneet18

0

essayez ceci:

format.html { redirect_to edit_project_trigger_path(@trigger, project_secret_key: @project.secret_key), :success => 'Trigger was successfully updated.' } 
+0

ne fonctionne pas, déjà essayé. – anandh

0

Cela devrait fonctionner:

format.html { redirect_to edit_project_trigger_path(@trigger, project_secret_key: @project.secret_key), flash: {success: 'Trigger was successfully updated.'} } 

Pour certaines raisons, dans des rails, vous devez vous soit avis ou clés d'alerte dans méthode redirect_to, mais si vous avez besoin de succès ou autre chose, vous devez utiliser hachage imbriqué dans clé Flash.

Vérifiez ici http://blog.remarkablelabs.com/2012/12/register-your-own-flash-types-rails-4-countdown-to-2013