Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails flash[:注意]在Rails中使用AJAX时不工作_Ruby On Rails_Ajax_Notice - Fatal编程技术网

Ruby on rails flash[:注意]在Rails中使用AJAX时不工作

Ruby on rails flash[:注意]在Rails中使用AJAX时不工作,ruby-on-rails,ajax,notice,Ruby On Rails,Ajax,Notice,我已经尝试过不同版本的make flash[:注意]在不重新加载的情况下工作。 Stackoverflow给了我这个-,但我找不到解决方案,这对我很有效。 例如,添加到我的控制器: def create @entry = Entry.new(params[:entry]) respond_to do |format| if @entry.save format.html { redirect_to @entry, notice: 'Entry was successfully

我已经尝试过不同版本的make flash[:注意]在不重新加载的情况下工作。 Stackoverflow给了我这个-,但我找不到解决方案,这对我很有效。 例如,添加到我的控制器:

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

$('').appendTo('#网站').hide().fadeIn();
$(“.alert”).html(“”)$(“.alert”)。显示(300);
$(“#新建#U网站”)[0]。重置();
但它不起作用


有人能告诉我一个通俗易懂的完整解决方案吗?这对他来说很有用。

你的js模板文件名有没有打错?它应该是create.js.erb,而不是create.js

请严格遵守,然后对其进行更改。

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

视图模板
create.js.erb
的外观如何?您应该使用当前的flash。看起来不错,尝试使用firebug查看服务器的ajax响应并调试js代码。没有与表单相关的错误。只有与所选插件相关的错误。我应该在FireBug控制台中添加一些观察者?您应该执行AJAX请求,检查服务器的响应并查看输出结果,然后尝试在FireBug控制台中执行相同的JS代码。
   $('<%= j render @website %>').appendTo('#websites').hide().fadeIn();
  $(".alert").html("<%= escape_javascript(flash[:notice]) %>"); $(".alert").show(300);
  $("#new_website")[0].reset();