iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 14
0
Modern Web

Rails guide / Ruby API study系列 第 14

[ Rails guide study ] Day14 Flash

首先,來聽首歌吧!

這是無意間聽到的一首歌,覺得很好聽,就來跟大家分享惹~


Flash

Flash 的值只會被存到下一個 request 中,如果我再次轉到另一個網頁, flash 就會被清空,所以常常被拿來用在表示錯誤訊息或者提示訊息

flash 的資料結構是 hash,只要記住這點就很容易理解怎麼使用,請看下面範例

#下面三種結果相同
redirect_to root_path, flash[:notice] = "Welcome Home!"
redirect_to root_path, flash: { notice: "Welcome Home!"}
#因為太常使用,所以Rails又提供下面這種簡寫
redirect_to root_path, notice: "Welcome Home!"

當然 falsh 能使用的 key 不只有 notice,你也可以存其他的 key,比方說 flash[:qoo] 或者 flash[:signed_status] 等等

Flash 只能存活在經過一個 request 之後,但如果想要讓他存活久一點可以使用 keep 這個方法

class QoosController < ApplicationController
  def index
    flash.keep
    #也可以只讓其中一個 key-value pair 存久一點
    flash.keep(:notice)
    
    redirect_to qoo2s_path
  end
end

另外,在某些情況下不會 trigger 新的 request,但還是想使用 flash就可以使用 now 這個方法


class QoosController < ApplicationController
  def create
    @user = User.new(params[clean_params])
    if @user.save
      # ...
    else
      flash.now[:notice] = "No new user created"
      render action: "new"
    end
  end
end

在上面的例子中,儲存失敗的情況下借用 new.html.erb 的畫面,但這並不會有新的 request,這時候就要用 now 的方法才能即時存到 flash

參考資料
Rails Guide

本文章同步分享於 http://anthonychao.site/


上一篇
[ Rails guide study ] Day13 Parameters
下一篇
[ Rails guide study ] Day15 Filters
系列文
Rails guide / Ruby API study30

尚未有邦友留言

立即登入留言