Re: [ruby-sp] Verificar se um campo na tabela não é nulo

57 views
Skip to first unread message

Jonas Alves

unread,
Jul 20, 2010, 8:14:26 AM7/20/10
to rub...@googlegroups.com

No 1o IF está escrito @lreposta ao invés de @lresposta.

Se isso não resolver, cole o erro completo aqui.

On Jul 20, 2010 9:08 AM, "Juliana Cindra" <juci...@gmail.com> wrote:
> Olá pessoal, bom dia
>
> Tenho uma action q deve verificar se a resposta de uma determinada pergunta
> que está salva no banco é do tipo 'nota','texto' ou 'multiplaescolha', pra
> isso eu preciso saber quando estes campos estão nulos, tipo:
>
> @lresposta = Resposta.find(:all, :conditions => ["pergunta_id = ?",
> @idpergunta])
> if (@lreposta[:nota].nil?)
> redirect_to :action => "grafico_pizza"
> elseif (@lresposta[:alternativa_id].nil?)
> redirect_to :action => "grafico_barra"
> elseif
> puts "Pergunta Discursiva"
> end
>
> Só que desta forma me retorna este erro aqui:
>
> You have a nil object when you didn't expect it!
>
> You might have expected an instance of ActiveRecord::Base.
> The error occurred while evaluating nil.[]
>
>
> Eutinha feito desta forma abaixo mas dava erro do segundo elseif, procurei
> alguns exemplos de como era a sintaxe pra eu poder fazer esta comparação,
> mas nao deu certo. Eu preciso comparar se o campo nota e multiplaescolha são
> nulos, caso os dois sejam nulos me mostra aquele texto do 2º elseif.
>
> @lresposta = Resposta.find(:all, :conditions => ["pergunta_id = ?",
> @idpergunta])
> if (@lreposta[:nota].nil?)
> redirect_to :action => "grafico_barra"
> elseif (@lresposta[:alternativa_id].nil?)
> redirect_to :action => "grafico_pizza"
> elseif ({@lresposta[:nota].nil?} and {@lresposta[:alternativa].nil?})
> puts "Pergunta Discursiva"
> end
>
> Por favor, alguém tem como me ajudar nesta questão, estou começando em ruby
> on rails a pouco tempo, tenho pesquisado e lido muita coisa pra eu poder
> fazer este trab aqui, mas ainda preciso de um help. Se puderem me ajudar eu
> agradeço!
>
> Desde já muito obrigada a todos pela atenção!
>
> Sds,
>
> = Juliana Cindra =
>
> --
> Você recebeu esta mensagem porque está inscrito no Grupo "ruby-sp" em
> Grupos do Google.
> Para postar neste grupo, envie um e-mail para rub...@googlegroups.com
> Para cancelar a sua inscrição neste grupo, envie um e-mail para
> ruby-sp+u...@googlegroups.com
> Para ver mais opções, visite este grupo em
> http://groups.google.com.br/group/ruby-sp?hl=pt-BR

Rodrigo Flores

unread,
Jul 20, 2010, 8:28:39 AM7/20/10
to rub...@googlegroups.com
Você tá colocando alguma coisa pra ser um hash com elementos ímpares.

{@lresposta[:nota].nil?} não é válido. Tire as chaves e veja se funciona.

2010/7/20 Juliana Cindra <juci...@gmail.com>:
> Olá Jonas, consertei o 's' q estava faltando e retornou este outro erro:
>
> SyntaxError in RelgraficosController#index
>
> /home/julianacindra/Área de
> Trabalho/redmine-0.9.6/vendor/plugins/redmine_relatorios/app/controllers/relgraficos_controller.rb:39:
> odd number list for Hash
> ...seif ({@lresposta[:nota].nil?} and {@lresposta[:alternativa]...
>
>
> ^
> /home/julianacindra/Área de
> Trabalho/redmine-0.9.6/vendor/plugins/redmine_relatorios/app/controllers/relgraficos_controller.rb:39:
> odd number list for Hash
> ...@lresposta[:alternativa].nil?})
>
>
> ^
>
> = Juliana Cindra =

--

Enviado do meu datacenter

===================
Rodrigo L. M. Flores
Computer Science Msc. Student - IME - USP
Computer Science Degree - IME - USP
Homepage (en): http://www.rodrigoflores.org
Blog (pt-BR): http://blog.rodrigoflores.org
Linux User # : 351304
Jabber: i...@rodrigoflores.org

Rodrigo Flores

unread,
Jul 20, 2010, 8:41:54 AM7/20/10
to rub...@googlegroups.com
@resposta é um array e não um hash pois você procurou com :all..

2010/7/20 Juliana Cindra <juci...@gmail.com>:
> tirei as chaves pra ver e me retornou isto:
>
> TypeError in RelgraficosController#index
>
> Symbol as array index
>
> = Juliana Cindra =
>
>
>
> Em 20 de julho de 2010 09:28, Rodrigo Flores
> <rodrigomar...@gmail.com> escreveu:

Norba

unread,
Jul 20, 2010, 9:21:52 AM7/20/10
to rub...@googlegroups.com
Que eu saiba em Ruby o "elseif", é sem o "e" depois do s. Seria assim "elsif". Não sei se dá pra usar "elseif" tbém.

E teria que ser assim

if @lreposta.nota.nil?
   redirect_to :action => "grafico_barra"
elsif @lresposta.alternativa_id.nil?
   redirect_to :action => "grafico_pizza"
elsif @lresposta.nota.nil? and @lresposta.alternativa.nil?
    puts "Pergunta Discursiva"
end
Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
0 new messages