Pregunta

mi aplicación Rails trabaja muy bien a nivel local. Pero una vez que lo puse en un servidor y en el modo de producción, me sale este error:

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'

Alguien tiene alguna idea de lo que significa?

EDIT: OK descubrí @features es nula. Pero no sé cómo es. En mi acción create tengo:

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"       

Luego, en mi acción confirman que tengo:

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
¿Fue útil?

Solución

Su variable de instancia @features es nulo para esa instancia.

Otros consejos

Probablemente debería utilizar el objeto de sesión para pasar datos entre las acciones. Flash es para el paso de mensajes entre las acciones, no de datos!

Creo que se necesita para poner flash.keep en la acción de crear ya que estás usando redirect_to y no render.

ActionController :: :: flash FlashHash

  

Cuando tenga que pasar un objeto a la acción actual, se utiliza ahora, y su objeto se desvanecerá cuando se realiza la acción actual.

     

Las entradas a través de establecer ahora se accede de la misma manera como entradas estándar: Flash [ ‘mi-key’].

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top