Ao add departamento.nome recebo esse erro na tela. " undefined method `nome' for nil:NilClass "
Tentei fazer o produto = Produto.find(id do produto em questão), que vi em outro topico aqui, porem onde eu posso ver o id dos meus produtos?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Ao add departamento.nome recebo esse erro na tela. " undefined method `nome' for nil:NilClass "
Tentei fazer o produto = Produto.find(id do produto em questão), que vi em outro topico aqui, porem onde eu posso ver o id dos meus produtos?
Olá Bruna, como vai?
Pode por gentileza compartilhar algumas informações do seu projeto:
indexcontroller: )
Codigo na index e controle estão abaixo, o banco de dados é o mesmo sugerido no projeto, postgres
<% if flash[:notice]%>
<div class="alert alert-success" role="alert">
<%= flash[:notice] %>
</div>
<%end%>
<table class="table table-bordered table-hover">
<thead>
<tr>
<td>Titulo</td>
<td>Ator principal</td>
<td>Nota</td>
<td>Ano</td>
<td>Genero </td>
<td colspan="2">
</tr>
</thead>
<tbody>
<%@filmes.each do |filme|%>
<tr>
<td><%= filme.titulo %></td>
<td><%= filme.atorprincipal %></td>
<td><%= filme.nota %></td>
<td><%= filme.ano %></td>
<td><%= filme.genero %></td>
<td><%= button_to "Remover", filme, method: :delete, class:"btn btn-danger", data: {confirm: "Tem certeza que deseja deletar o filme #{filme.titulo}?"} %></td>
<td><%= link_to "Alterar", edit_filme_path(filme), class: "btn btn-default" %> </td>
</tr>
<%end%>
</tbody>
</table>
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">Filmes com maiores notas </h4>
</div>
<table class="table table-bordered table-hover">
<thead>
<tr>
<td>Titulo</td>
<td>Ator principal</td>
<td>Nota</td>
<td>Ano</td>
</tr>
</thead>
<tbody>
<%@filmes_com_maior_nota.each do |filme|%>
<tr>
<td><%= filme.titulo %></td>
<td><%= filme.atorprincipal %></td>
<td><%= filme.nota %></td>
<td><%= filme.ano %></td>
</tr>
<%end%>
</tbody>
</table>
Codigo na controller está assim:
class FilmesController < ApplicationController
def index
@filmes = Filme.order :nota
@filmes_com_maior_nota = Filme.order(nota: :desc).limit 2
end
def new
@filme = Filme.new
@generos = Genero.all
end
def create
atributos = params.require(:filme).permit(:titulo, :atorprincipal, :nota, :ano, :genero_id)
@filme = Filme.new atributos
if @filme.save
flash[:notice] = "Filme salvo com sucesso!"
redirect_to root_url
else
render :new
end
end
def destroy
id = params[:id]
Filme.destroy id
redirect_to root_url
end
def busca
@titulo = params[:titulo]
@filmes = Filme.where "titulo like ?", "%#{@titulo}%"
end
def edit
id = params [:id]
@filme = Filme.find(id)
@generos = Genero.all
render :new
end
def update
id = params[:id]
@filme = Filme.find(id)
@generos = Genero.all
atributos = params.require(:filme).permit(:titulo,
:atorprincipal, :nota, :ano, :genero_id)
if @produto.update atributos
flash[:notice] = "Filme atualizado com sucesso!"
redirect_to root_url
else
@generos = Filme.all
render :new
end
end
end
Acho que essa nil class ta impactando na hora de implementar o def edit, pois recebo o erro "wrong number of arguments (given 1, expected 0)" na linha onde tenho id = params [:id]
Oi, Bruna, tudo bem?
Muito obrigado por compartilhar seu código.
Para conferir os ids no dos filmes no banco, você por usar o comando rails console no terminal para acessar o console da aplicação, em seguida faça os passos:
`filmes = Filme.all
Ou abrir seu PGAdmin e acessar a tabela de filmes também, clicando em cima da tabela com botão direito e escolhendo a opção all rows.
Porém, parece que esse erro ocorre por conta de filmes que não possuem gênero, especificamente nesse trecho:
<td><%= filme.genero %></td>
Se possível, peço por gentileza que verifique se todos os filmes possuem um gênero e no lugar de exibir o id, sugiro o nome do gênero:
<td><%= filme.genero.nome %></td>
Realize esses teste e fale o resultado que teve. Conte sempre com a Alura.
: )
Consegui resolver com um
| <%= filme.genero.nome unless filme.genero.nil? %> |
Parabéns Bruna, fico feliz que conseguiu!
Bons estudos e conte com a Alura!
: )