1
Hello, I’m working with ruby on Rails and I’m having the error: 'Undefined method', as in the image
The employee is working, and if I put only the book.cliente_id, it works.
Follow the codes below:
view-> _book.html.erb
<%= livro.nome %>
<%= livro.departamento.nome %>
<%= livro.sinopse %>
<%= livro.editora %>
<%= livro.pg %>
<%= livro.emprestimo %>
<%= livro.devolucao %>
<% if livro.funcionario_id != nil %>
<%= livro.funcionario.nome %>
<% end %>
<% if livro.cliente_id != nil %>
<%= livro.cliente.nome %>
<% end %>
<%= button_to "Remover", livro, method: :delete,
class: "btn btn-danger",
data: { confirm: "Tem certeza que deseja remover #{livro.nome} ?" } %>
<%= link_to "Alterar", edit_livro_path(livro), class: "btn btn-default" %>
<% if livro.cliente_id == nil %>
<%= link_to "Emprestar", "/livros/#{livro.id}/pegar", class: "btn btn-default" %>
<% else %>
<%= link_to "Devolver", "/livros/#{livro.id}/devolver", class: "btn btn-default" %>
<% end %>
Model - book.erb
class Livro < ApplicationRecordundefined>
belongs_to :departamento
belongs_to :funcionario, optional: true
belongs_to :clientes, optional: true
validates :nome, length: { minimum: 5 }
validates :sinopse, length: { minimum: 10 }
validates :editora, length: { minimum: 5 }
end
Controller -> bookbook_controller.erb
class LivrosController < ApplicationController
before_action :set_livro, only: [:edit, :update, :destroy, :pegar, :devolver]
def index
@livros_nome = Livro.order(:nome).limit 20
end
def new
@livro = Livro.new
renderiza :new
end
def create
@livro = Livro.new livro_params
if @livro.save
flash[:notice] = "Livro Cadastrado com Sucesso!"
redirect_to livros_path
else
renderiza :new
end
end
def destroy
@livro.destroy
redirect_to root_url
end
def busca
@nome_buscar = params[:nome]
@livros = Livro.where "nome like?", "%#{@nome_buscar}%"
end
def edit
renderiza :edit
end
def update
opcao = params[:opcao]
if opcao == "1"
if @livro.update livro_params
flash[:notice] = "Livro atualizado com sucesso!"
redirect_to livros_path
else
renderiza :edit
end
elsif opcao == "2"
book = Livro.new loan_params
id = book.funcionario_id
book.emprestimo = Date.today
book.devolucao = book.emprestimo.next_week
loan = loan_params
loan[:devolucao] = book.devolucao
loan[:emprestimo] = book.emprestimo
if Funcionario.find(id)
id = book.cliente_id
if Cliente.find(id)
cli = Cliente.find(id)
if cli.pendencia != nil || cli.pendencia != 0
if @livro.update loan
flash[:notice] = "Livro emprestado com sucesso!"
redirect_to livros_path
else
render :pegar
end # if update
else
render :pegar
end # if cli.pendencias
else
render :pegar
end # if cliente_id
else
render :pegar
end # if Funcionario_id
elsif opcao == "3"
#opcaoes
# end fo IF opcao
end
end
def pegar
end
def devolver
if @livro.cliente_id == nil
flash[:notice] = "Livro já consta em nosso estoque!"
redirect_to livros_path
else
id = @livro.cliente_id
if Cliente.find(id)
cli = Cliente.find(id)
if @livro.emprestimo > @livro.devolucao
@livro.emprestimo = nil
@livro.devolucao = nil
cli.pendencia = cli.pendencia + 2
hashcliente = {pendencia: cli.pendencia}
hashlivro = { emprestimo: nil, devolucao: Date.today, funcionario_id: nil, cliente_id: nil }
cli.update hashcliente
@livro.update hashlivro
flash[:notice] = "Livro Devolvido com sucesso, pendencia no cliente #{cli.nome}!"
redirect_to livros_path
else
@livro.emprestimo = nil
@livro.devolucao = nil
hashlivro = { emprestimo: nil, devolucao: Date.today, funcionario_id: nil, cliente_id: nil }
@livro.update hashlivro
flash[:notice] = "Livro Devolvido com sucesso, sem nenhum atraso!"
redirect_to livros_path
end # emprestimo > devolver
end # livro == nil
end #procurar cliente
end # devolver
private
def renderiza(view)
@departamentos = Departamento.all
render view
end
def set_livro
id = params[:id]
@livro = Livro.find(id)
end
def livro_params
params.require(:livro).permit :nome, :sinopse, :editora, :pg, :departamento_id, :funcionario_id, :cliente_id, :devolucao, :emprestimo
end
def loan_params
params.require(:livro).permit :funcionario_id, :cliente_id, :devolucao, :emprestimo
end
end
Github link with project: https://github.com/felipeejunges/Biblioteca/