哪个是正确的使用方式?flash[:notice] 和 :notice 有什么区别?

3

应该使用哪个?flash[:notice] = 'some msg' 还是 :notice = 'some msg'

我遇到了这两个选项,但没有解释它们之间的区别。所以我不确定该使用哪一个。也许它们是相同的吗?

1个回答

5
如果您有一个带有操作的控制器,例如以下内容:
def create
  @activity = Activity.new activity_params
  if @activity.save
    flash[:notice] = 'Activity was successfully created!'
    redirect_to activity_path(@activity)
  else
    render :new
  end
end

然后你可以使用flash[:notice]来设置flash哈希的通知为Activity was successfully created!

然而,当使用redirect_to时,您可以将:notice作为选项传递,如下:

def destroy
  if @activity.destroy
    redirect_to activities_path, notice: 'Activity was successfully destroy!'
  else
    flash.now[:notice] = 'Activity was not destroyed.'
  end
end

如果您查看ActionController::Redirecting模块,您会发现可以将通知作为选项传递。

从根本上说,这两个东西做的是同样的事情。只是设置方式不同。

希望这能帮到您!


请注意,redirect_to 仅支持 alertnoticeflash。它不支持 success 和其他类型。notice 也存储在名为 notice 的变量中。因此,您无需使用 flash 对象来访问它。 - konyak

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