Null return of an object in the controller - RAILS

1

Hello! I have the following code snippet from a controller called ProductsController:

  def index
    @produtos = Produto.all
  end

  def gerarlog
    @produtos.each do |produto|
      File.open('produtosBD.yml', 'a') do |arquivo|
        arquivo.puts YAML.dump("ID: "+produto.id)
        arquivo.puts ""
        arquivo.puts YAML.dump("Nome: "+produto.nome)
        arquivo.puts ""
        arquivo.puts YAML.dump("Descrição: "+produto.descricao)
        arquivo.puts ""
      end
    end
  end

My routes file looks like this:

  resources :produtos do
    collection do
      get :gerarlog
    end
  end
  post "produtos/gerarlog"
  root 'home#index'

When I call the generatelog function with a button click on the view, the error appears:

undefined method 'each' for nil: NilClass

    
asked by anonymous 30.05.2017 / 21:01

2 answers

0

I've added this line:

products = Product.all

shortly after setting the germlog function and it worked. no more '-'

    
30.05.2017 / 21:16
0

It is not the right way, but in your case, it can solve your problem. I recommend adding the full code for review.

def index
  @produtos = Produto.all
end

def gerarlog
  @produtos = Produto.all
  @produtos.each do |produto|
    File.open('produtosBD.yml', 'a') do |arquivo|
      arquivo.puts YAML.dump("ID: "+produto.id)
      arquivo.puts ""
      arquivo.puts YAML.dump("Nome: "+produto.nome)
      arquivo.puts ""
      arquivo.puts YAML.dump("Descrição: "+produto.descricao)
      arquivo.puts ""
    end
  end
end
    
01.06.2017 / 15:57