Ошибка шаблона - PullRequest
       27

Ошибка шаблона

0 голосов
/ 25 марта 2009

мое приложение Rails отлично работает локально. Но как только я помещаю его на сервер и в производственный режим, я получаю эту ошибку:

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'

Кто-нибудь знает, что это значит?

РЕДАКТИРОВАТЬ: ОК, я обнаружил, что @features ноль. Но я не знаю, как это. В моем действии создания у меня есть:

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"       

Тогда в моем действии подтверждения я имею:

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

Ответы [ 3 ]

3 голосов
/ 25 марта 2009

Вам, вероятно, следует использовать объект сеанса для передачи данных между действиями. Flash предназначен для передачи сообщений между действиями, а не данными!

1 голос
/ 25 марта 2009

Ваша переменная экземпляра @features для этого экземпляра равна nil.

0 голосов
/ 26 марта 2009

Я думаю, вам нужно поместить flash.keep в действие создания, так как вы используете redirect_to, а не render.

Из ActionController :: Flash :: FlashHash

Когда вам нужно передать объект текущему действию, вы используете его сейчас, и ваш объект исчезнет, ​​когда текущее действие будет выполнено.

Доступ к записям, установленным через сейчас, осуществляется так же, как и к стандартным записям: flash [‘my-key’].

...