2010-01-24 4 views
3

Je la petite application Sinatra (I ai supprimé le code inutile supplémentaire):Ruby/Sinatra/HAML problème message flash

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 

Et puis je suit dans le fichier modèle de mise en page de base HAML que l'application utilise:

#message 

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

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

Ainsi, en théorie, quand quelqu'un poste un message, aide le flash() est appelée et une variable de session est définie, la demande est redirect, lorsque les avant coups de pied filtre dans et doit définir la variable de session sur une variable d'instance accessible par le modèle.

Cependant, pour la vie de moi, je n'arrive pas à comprendre pourquoi il n'est pas imprimé le message dans le modèle.

Des idées?

Répondre