Офіційний FAQ по Sinatra рекомендує використовувати Rack::Flash, щоб отримати ту ж функціональність.
Один із розробників фреймворку Sinatra - Konstantin Haase у своєму twitter рекомендує використовувати Sinatra::Flash
If you're using it with Sinatra, switch from rack-flash to sinatra-flash--http://twitter.com/konstantinhaase/status/92219479890726912
Про нього і піде мова нище.
Sinatra::Flash пропонує наступний набір функцій:
- Простота (менше 50 рядків коду)
- Докладна документація
- Сумісність з API з Rails Flash, яким користується багато розробників
- Кілька необов'язкових іменованих Flash-колекцій, кожна зі своїми хеш-повідомленням, так що різні вбудовані додатки можуть отримувати доступ до різних наборів повідомлень
- HTML-помічник для відображення Flash-повідомлень
Все, що потрібно зробити, це встановити gem:
$ sudo gem install sinatra-flash
За приклад знову ж так візьмемо наш проект блогу із серії статей про Sinatra.
Все що вам потрібно зробити, це включити сесій і викликати бібліотеку Sinatra::Flash:
Додаємо наступні рядки на початку blog.rb:
require 'sinatra/flash'
enable :sessions
Вносимо зміни у метод для створення нового запису у файлі blog.rb:
# create
post "/posts" do
@post = Post.create(:title => params[:title], :body => params[:body])
if @post.save
flash[:blah] = "Successfully create new post"
redirect "/posts"
else
redirect "/posts/new"
end
end
У представленні використовуємо помічник styled_flash, який здійснює перебір поточних Flash-повідомлень і виводить їх у HTML-стилі.
Редагуємо views/posts/index.haml:
#header
%h1 Мій блог
=styled_flash
%a{:href => "posts/new"}> New Post
#content
- @posts.each do |post|
.container
%h3= post.title
%p= post.body
%p= post.created_at
%table
%tr
%td
%a{:href => "posts/#{post.id}"}> Show
%td
%a{:href => "posts/#{post.id}/edit"}> Edit
%td
%form{:method => 'post', :action => "/posts/#{post.id}"}
%input{:type => "hidden", :name => "_method", :value => "delete"}
%input{:type=>'submit', :value => 'Destroy'}
HTML матиме наступний вигляд:
<div id='flash'>
<div class='flash blah'>Successfully create new post</div>
</div><
Стилізація CSS для #flash id, the .flash class повністю залежить від вас.
Немає коментарів:
Дописати коментар