NOTO

railsのflashのよくあるお知らせ

 Date:2016-03-29 23:23:43 +0900
 Categories: ETC

railsのflashを使ってみて、今後同じような表現方法を使いそうだったのでメモ。

やりたいこと

controllerからflashメッセージがあったらタイプによって表現方法を変えたい。

コード例

controller

# 例えば
def create
@record = Record.new(record_params)

respond_to do |format|
if @record.save
flash[:success] = '新しい支払いを追加しました'
format.html { redirect_to records_path }
else
format.html { render :new }
end
end
end

haml

- if flash
- flash.each do |type, msg|
%p{ class: "flash #{type}" }
= "お知らせ: #{msg}"

css

p.flash{
display:none;
position: fixed;
top: 0;
width: 100%;
text-align: center;
color: #fff;
font-weight: bold;
padding: 10px;

&.success {
background-color: rgba(77, 188, 219, 0.8);
}
&.notice {
background-color: rgba(237, 221, 40, 0.8);
}
&.error {
background-color: rgba(219, 30, 20, 0.8);
}
&.info {
background-color: rgba(255, 255, 255, 0.8);
}
}

js

$ ->
$('p.flash').fadeIn 800, ->
setTimeout ->
$('p.flash').fadeOut(1000)
, 3000

すると

こんな感じになります。
良さですね。
Tweet