【问题标题】:Flash message in AJAX renderingAJAX 渲染中的 Flash 消息
【发布时间】:2016-09-05 00:39:21
【问题描述】:

我有一个 Products 和产品 Reviews 控制器。我试图在创建评论时在我的 AJAX 渲染中显示一条 Flash 消息 ("Your review is under review for approval")。不知道我该怎么做。

审核控制器

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

【问题讨论】:

  • 只需添加一个 DOM 元素并将您的 Flash 消息绑定到它。例如:将此添加到视图模板:&lt;div id="flash_notice"&gt;&lt;/div&gt;,然后在您的 create.js.erb 中执行:$("#flash_notice").html("Your review is under review for approval");
  • @dkp 拯救了我的一天!非常感谢!

标签: ruby-on-rails ruby ajax ruby-on-rails-3 ruby-on-rails-4


【解决方案1】:

第 1 步:

向 DOM 添加元素如下:

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

第 2 步:

将 flash 消息渲染到 create.js.erb 中的 DOM:

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

【讨论】:

  • 这工作得很好,但我有另一个问题,在我重新加载页面并进行 AJAX 调用/渲染后,这似乎只工作一次。如果我尝试在不重新加载页面的情况下提交另一条评论,它将不会显示#flash_notice。有没有办法解决这个问题?
猜你喜欢
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多