Проблема с флеш-сообщениями Ruby / Sinatra / HAML - PullRequest
3 голосов
/ 24 января 2010

У меня есть следующее маленькое приложение Sinatra (я удалил лишний ненужный код):

helpers do
    def flash(args={}) 
        session[:flash] = args 
    end 

    def flash_now(args={}) 
        @flash = args 
    end
end

before do 
  @flash = session[:flash] || {} 
  session[:flash] = nil 
end

post '/post' do
    client = Twitter::Client.new(:login => 'xxxxxxx', :password => 'xxxxxxx')

    username = params[:username]
    type = params[:type]
    tags = params[:tags]
    budget = params[:budget]

    if username != '' && type != '' && tags != '' && budget != '' 

        message = username + ' is looking for a ' + type +  ' with ' + tags + ' skills.  Budget =  '  + budget + ' #freelance #job'
        status = client.status(:post, message) 

        flash(:notice => 'Gig posting sent successfully!') 

    else
        flash(:error => 'Gig posting unsuccessful - please check the marked fields!') 
    end

    redirect '/'

end

И затем у меня есть следующее в файле шаблона базового макета HAML, который использует приложение:

#message

    - if @flash[:error]
        %p.error 
            = @flash[:error]

    - if @flash[:notice]
        %p.notice
            = @flash[:notice]

Итак, теоретически, когда кто-то публикует сообщение, вызывается помощник flash () и устанавливается переменная сеанса, тогда запрос перенаправляется, когда включается фильтр before, и он должен установить переменную сеанса в экземпляр переменная доступна по шаблону.

Однако я не могу понять, почему он не печатает сообщение в шаблоне.

Есть идеи?

1 Ответ

5 голосов
/ 26 января 2010

Я исправил это, используя вместо этого:

http://github.com/nakajima/rack-flash

...