Null return of an object in the controller - RAILS

Asked

Viewed 47 times

1

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

  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 file Routes is like this:

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

When I call the gerarlog function with a button click in the view, the error appears:

Undefined method `each' for nil:Nilclass

2 answers

0

I added this line:

products = Product.all

soon after setting the gerarlog function and it worked. no more '-'

0

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

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

Browser other questions tagged

You are not signed in. Login or sign up in order to post.