1
resposta

Produtos não aparecem na busca se não for exatamente o mesmo nome que está cadastrado

Quando busco um nome parcialmente, exemplo: "bo" de "Bolo" ele não encontra nenhum produto. Somente quando busco pelo nome completo, nesse caso "Bolo" que ele encontra. Vi que para que isso não acontecesse eu só precisaria colocar o % entre nome como está no meu produtos_controller.rb Alguém me ajuda please!

class ProdutosController < ApplicationController

    before_action :set_produto, only: [:edit, :update, :destroy]

    def index
        @produtos = Produto.order :nome
        @produto_com_desconto = Produto.order(:preco).limit 1
    end

    def create
        @produto = Produto.new produto_params
        if @produto.save
            flash[:notice] = "Produto salvo com sucesso!"
            redirect_to root_url
        else
            renderiza :new
        end
    end


    def destroy
        @produto.destroy
        redirect_to root_path
    end

    def busca
        @nome = params[:nome]
        @produtos = Produto.where "nome like ?", "%#{@nome}%"
    end

    def new
        @produto = Produto.new
        @departamentos = Departamento.all
    end

    def edit
        renderiza :edit
    end

    def update
        if @produto.update produto_params
            flash[:notice] = "Produto atualizado com sucesso"
            redirect_to root_url
        else
            renderiza :edit
        end
    end

    private

    def produto_params
        params.require(:produto).permit(:nome, :descricao, :preco, :quantidade, :departamento_id)
    end

    def set_produto
        @produto = Produto.find(params[:id])
    end

    def renderiza(view)
        @departamentos = Departamento.all
        render view
    end

end

busca.html.erb

<table class="table table-bordered table-hover">
    <thead>
        <tr>
            <td><b>Nome</b></td>
            <td><b>Descrição</b></td>
            <td><b>Departamento</b></td>
            <td><b>Preço</b></td>
            <td><b>Quantidade</b></td>
            <td colspan="2">
        </tr>
    </thead>
    <tbody>
        <%= render @produtos %>
    </tbody>
</table>
1 resposta

Aqui tem 2 respostas. Veja se serve para você: https://stackoverflow.com/questions/5302837/like-and-where-condition-in-ruby