respond_with & Flash Notice

7

我在一个控制器中有以下代码:

def create

  photo.user = current_user if current_user
  flash[:notice] = "The photos was saved" if photo.save
  respond_with photo, :location => photo_path(photo)

end

这段代码在一个例外情况下可用。如果我使用某种 AJAX 访问此操作,然后访问另一页,将显示闪存通知。如何仅在响应 :html 时显示闪存通知?我认为可能可以通过将 :notice => "my flash" 传递给 respond_with 来实现,但没有成功。

2个回答

9
您可以使用以下条件:

您可以放置条件,例如:

flash[:notice] = "The photos was saved" if photo.save && !request.xhr?

此外,如果有一天你决定在响应AJAX请求时使用生成的通知,则可以使用flash.discard来清除闪存。

-1

使用方法如下:

respond_to do |format|
  format.html { redirect_to photo_path(photo), :notice => 'The photos was saved') }
  format.xml  { render :xml => photo, :status => :created}
end

这是我以前的做法,但我正在尝试从respond_to转向更简洁的respond_with - Kyle Decot
必须点踩,因为答案没有尝试回答关于使用respond_with的问题。 - Lester Peabody
@LesterPeabody,它确实提供了一个解决方案。而且回答后可能已经编辑了问题(虽然我不确定两年前发生了什么)。我对投票反对没有问题,但在行使之前可能需要更多的思考。 - amit_saxena

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接