提交简单表格后如何显示通知

时间:2016-06-22 17:35:12

标签: javascript ruby-on-rails ajax forms simple-form

我正在使用Simple Form和Ajax,我希望在成功提交表单后显示“成功提交”之类的通知(可以是flash)。我怎样才能做到这一点?

这是我的控制器:

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

和我的观点中的表单:

<%= 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>

2 个答案:

答案 0 :(得分:1)

您可以在提交表单时响应javascript请求。

控制器:

# 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

然后创建一个显示消息的视图:

# app/mycontroller/create.js.erb

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

它应该有用!

答案 1 :(得分:-1)

您可以使用bootstrap警报来实现它。 控制器:

    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

您可以在任何地方使用此

显示该Flash消息

查看:

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