2009-03-25 5 views
0

meine Rails App funktioniert gut lokal. Aber sobald ich es auf einem Server und im Produktionsmodus setzen, bekomme ich diesen Fehler:Vorlage Fehler

ActionView::TemplateError (undefined method `each' for nil:NilClass) on line #7 of app/views/admin/confirm.rhtml: 
4: <br>Description: 
5: <br><%= @description %> 
6: <br>Features: 
7: <% @features.each do |feature| %> 
8:  <br><%= feature.humanize %> 
9: <% end %> 
10: <br>Role data: 

    app/views/admin/confirm.rhtml:7 
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/renderable.rb:39:in `send' 
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/renderable.rb:39:in `render' 
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/template.rb:73:in `render_template' 
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/base.rb:256:in `render' 
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/base.rb:367:in `_render_with_layout' 
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_view/base.rb:254:in `render' 
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:1174:in `render_for_file' 
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-2.2.2/lib/action_controller/base.rb:896:in `render_without_benchmark' 

Wer noch keine Ahnung hat, was es bedeutet?

EDIT: OK Ich fand @features ist Null. Aber ich weiß nicht, wie es ist. In meiner Aktion erstellen Ich habe:

flash[:name] = params[:name] 
flash[:description] = params[:description] 
flash[:role_data] = params[:role_data] 
flash[:user_data] = params[:user_data] 
flash[:features] = params[:features] 
flash[:theme] = params[:theme] 
redirect_to :action => "confirm"  

Dann in meiner bestätigen Aktion habe ich:

def confirm 
    @title = "Create a new simulation" 
    @features = flash[:features] 
    @name = flash[:name] 
    @description = flash[:description] 
    @role_data = flash[:role_data] 
    @user_data = flash[:user_data] 
    @theme = flash[:theme] 
    flash.keep 
    end 
+0

UHG, was los ist mit dem Flash-Zeug? Wha .. –

+0

Sie sollten das Objekt wahrscheinlich untersuchen, bevor Sie es an die Ansicht senden. Und wieder, was ist los mit dem Flash-Zeug ??? :O – Chirantan

Antwort

1

Ihre @features Instanzvariable ist gleich Null für diese Instanz.

3

Sie sollten wahrscheinlich das Sitzungsobjekt verwenden, um Daten zwischen Aktionen zu übergeben. Flash dient zum Weiterleiten von Nachrichten zwischen Aktionen, nicht zu Daten!

0

Ich denke, Sie müssen flash.keep in die Aktion erstellen, da Sie redirect_to und nicht render verwenden.

Von ActionController::Flash::FlashHash

When you need to pass an object to the current action, you use now, and your object will vanish when the current action is done.

Entries set via now are accessed the same way as standard entries: flash[‘my-key’].