2016-05-10 3 views
0

Ich habe einen Products und Produkt Reviews Controller. Ich versuche eine Flash-Nachricht ("Your review is under review for approval") in meinem AJAX-Rendering anzuzeigen, wenn eine Überprüfung erstellt wird. Ich bin mir nicht sicher, wie ich das machen soll.Flash-Nachricht in AJAX-Rendering

Bewertung Controller-

def create 
    @product = Product.find(params[:product_id]) 
    @review = Review.new(review_params) 
    @review.user = current_user 
    @review.product = @product 
    respond_to do |format| 
    if @review.save 
     format.html { redirect_to product_path(@product), flash[:notice]="Your review is under review for approval" } 
     format.js {render :create_success} 
    else 
     format.html { render "products/show" } 
     format.js {render :create_failure} 
    end 
    end 
end 

create_success.js.erb

$("#reviews").prepend("<%= j render '/reviews/review', review: @review %>"); 
<% @review = Review.new %> 
$("#new_review").replaceWith("<%= j render 'review_form' %>") 

index.html.erb

<div class="reviews" id="<%= dom_id(review)%>"> 
</div> 

<%= simple_form_for [@product, @review], remote: true do |f| %> 
<div class="form-group"> 
    <%= f.input :review_comment, placeholder: "Let us know what you think here..."%> 
</div> 
<div> 
    <%= f.submit "Submit", class: "btn review-form-btn" %> 
</div> 
<% end %> 
+2

Fügen Sie einfach ein DOM-Element hinzu und binden Sie Ihre Flash-Nachricht daran. Bsp: Fügen Sie dies zur Ansicht Vorlage: '', dann in Ihrem ** create.js.erb ** tun: '$ (" # flash_notice "). Html (" Ihre Überprüfung wird zur Genehmigung geprüft ");' – dp7

+0

@dkp hat meinen Tag gerettet! Danke vielmals! – Tim

Antwort

0

Schritt-1:

ein Element zu DOM hinzufügen wie folgt:

<div id="flash_notice"></div> 

Schritt-2:

Flash-Nachricht an DOM in create.js.erb Render:

$("#flash_notice").html("Your review is under review for approval"); 
+0

das funktioniert perfekt, aber ich habe ein anderes Problem, wo dies scheint nur einmal zu funktionieren, nachdem ich die Seite neu laden und meinen AJAX Call/render. Wenn ich versuche, eine andere Rezension einzureichen, ohne die Seite neu zu laden, wird die '# flash_notice' nicht angezeigt. Gibt es eine Möglichkeit, das zu beheben? – Tim