【问题标题】:flash[:notice] not working when using AJAX in Rails在 Rails 中使用 AJAX 时,flash[:notice] 不起作用
【发布时间】:2012-07-30 07:49:28
【问题描述】:

我尝试了不同的 make flash[:notice] 变体,无需重新加载即可工作。

Stackoverflow 给了我这个 - How do you handle Rail's flash with Ajax requests?,但我找不到对我有用的解决方案。

例如,添加到我的控制器中:

def create
  @entry = Entry.new(params[:entry])
  respond_to do |format|
  if @entry.save
    format.html { redirect_to @entry, notice: 'Entry was successfully created.' }
    format.js {
  flash.now[:notice] = 'Website was successfully created.'
 render action: 'create'
}
  else
    format.html { render action: "new" }
    format.js { render action: "new" }
  end
  end
end

create.js

   $('<%= j render @website %>').appendTo('#websites').hide().fadeIn();
  $(".alert").html("<%= escape_javascript(flash[:notice]) %>"); $(".alert").show(300);
  $("#new_website")[0].reset();

但是没有用。

谁能告诉我可以理解的完整解决方案,对他有用吗?

【问题讨论】:

  • 您的视图模板create.js.erb 的外观如何?您应该在那里使用当前的闪光灯。
  • 看起来不错,尝试使用firebug查看服务器的ajax响应并调试js代码。
  • 没有与表单相关的错误。仅与所选插件相关的错误。
  • 我应该在 FireBug 控制台中添加一些观察者?
  • 你应该执行 AJAX 请求,检查服务器的响应并查看输出的样子,然后尝试在 firebug 控制台中执行相同的 JS 代码。

标签: ruby-on-rails ajax notice


【解决方案1】:

您正在通过 Ajax 提交新条目,因此您不应该使用 flash——它用于重定向响应,但您没有重定向。要指示成功或失败,您需要将其写入 JavaScript 响应中。

【讨论】:

    【解决方案2】:

    你的 js 模板文件名有错字吗?它应该是 create.js.erb 但不是 create.js
    请严格按照https://stackoverflow.com/a/8873592/557863 进行修改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 2011-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      相关资源
      最近更新 更多