2016-06-22 4 views
0

Ich benutze Simple Form und Ajax und ich möchte eine Meldung (es kann Flash sein) etwas wie "Erfolgreich eingereicht", nach erfolgreicher Einreichung eines Formulars. Wie kann ich das erreichen?So zeigen Sie eine Benachrichtigung nach dem Senden eines einfachen Formulars

Das ist mein Controller:

def create 
    @order = current_order 
    @order_item = @order.order_items.new(order_item_params) 
    @order.user_id = current_user.id 
    @order.save 
    session[:order_id] = @order.id 

    end 

und meine Form in Aussicht:

<%= form_for OrderItem.new, html: {class: "add-to-cart"}, remote: true do |f| %> 


     <div class="input-group"> 
      <%= f.hidden_field :quantity, value: 1, min: 1 %> 
      <div class="input-group-btn"> 
      <%= f.hidden_field :product_id, value: product.id %> 
      <%= f.submit "Add to Cart", data: { confirm: 'Are you sure?'}, class: "btn btn-default black-background white" %> 
      </div> 
     </div> 
     <% end %> 
    </div> 
+0

http://stackoverflow.com/questions/36734020/how-to- Display-Nachrichten-aka-Flash-ohne-Rendering-oder-Umleitung – nobilik

Antwort

1

Sie können es zu einem Javascript Antrag tun reagieren, wenn Formular abgeschickt wird.

Controller:

# app/controllers/mycontroller.rb 

def create 
    @order = current_order 
    @order_item = @order.order_items.new(order_item_params) 
    @order.user_id = current_user.id 
    @order.save 
    session[:order_id] = @order.id 

    respond_to do |format| 
    format.js { flash[:notice] = "Created order" } 
    end 
end 

Und dann eine Ansicht erstellen, die Nachricht zeigen:

# app/mycontroller/create.js.erb 

<% flash.each do |key, value| %> 
    $('.add-to-cart').append('<%= j content_tag :div, value, class: "flash #{key}" %>') 
<% end %> 

Es sollte funktionieren!

-1

Sie können die Bootstrap-Warnung verwenden, um dies zu erreichen. Controller:

def create 
     @order = current_order 
     @order_item = @order.order_items.new(order_item_params) 
     @order.user_id = current_user.id 

     if @order.save 
     flash[:success] = "Successfully Submitted" 
     end 

     session[:order_id] = @order.id 
    end 

können Sie das Flash-Mitteilung angezeigt werden, wo immer Sie diese

Blick auf die Verwendung möchten:

<% flash.each do |message_type, message| %> 
     <div class="alert alert-<%= message_type %>"><%= message %></div> 
    <% end %>