iT邦幫忙

DAY 29
0

Ruby on Rails 實戰聖經 - 初心者的30天學習記錄系列 第 29

Ruby on Rails (29) - Flash快閃訊息

  • 分享至 

  • xImage
  •  

在Controller中,Rails提供了一個方便的功能叫做Flash,可以讓我們向user顯示一些確認/錯誤訊息。

Flash是一個暫時的Hash,顯示一次後就會被清掉,是一個很方便的方法。

在users controller裡,其實我們已經用過了Flash:

if @user.save
redirect_to @user, notice: "Register Success!"

notice: "Register Success!" 這一行就是一個Flash訊息。

:notice現在是Flash這個Hash的一個key,而value是“Register Success!"

它的結構如下:
Controller的 flash[:notice] = "Register Success!"
Hash Key Value

只是Flash訊息不會自動顯示,我們必須要把它加入到主模板(layout)中,才可以讓每一個頁面都可以顯示Flash訊息。

編輯app/views/layouts/application.html.erb的body區塊
加入

    <% flash.each.do |key, value| %>
        <div class="alert alert-<%= key%>">
        <%= value %>
        </div>
    <% end %>
    <%= yield %>

其中

<div class="alert alert-<%= key%>">
    <%= value %>
</div>

將會輸出成
<div class="alert alert-notice>Register Success!</div>

現在回到new頁面註冊一個新的user,應該就可以看到正確的Flash訊息了。

最後,我們可以稍微修改一下controller,讓這個flash訊息更客製化。
編輯users_controller.rb

def create
@user = User.new(user_params)

if @user.save
    flash[:success] = "Welcome, #{@user.name}"
    redirect_to @user

else
render action: 'new'
end

end

上一篇
Ruby on Rails (28) - 顯示錯誤訊息
下一篇
Ruby on Rails (30) - Session
系列文
Ruby on Rails 實戰聖經 - 初心者的30天學習記錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言