Skip to content Skip to sidebar Skip to footer

Get And Display All Values From Database Row Separately Based On Select (rails)

Hi i'm stuck making an invoicing application. I want to have an option where you can add an existing customer from the customers table and add those values to the invoice. The valu

Solution 1:

<%= select_tag 'choose customer', options_from_collection_for_select(current_user.customers.all, 'id', 'company_name'), id: "choose_customer" %>

You can bind the change event from the rails to an ajax call, send the id of the selected object, if you want to fetch the data based on the selected value, call a method, then handle the view using that response

    $(document).ready(function() { 
    $("#choose_company").bind("change",function() { 
        if ($(this).val() != undefined) { 
            $.ajax({ 
                url : "/my_action", 
                data: {'company': $(this).val()}, 
                dataType: "json", 
                type: "GET", 
                success : function(data) { 
                    $(".display_btw").html(data["btw_number"]); 
                    $(".display_iban").html(data["iban_number"]); 
                    $('.chosen_company_btw').val(data["btw_number"]).text(data["btw_number"]); 
                    $('.chosen_company_iban').val(data["iban_number"]).text(data["iban_number"]); 
                } 
            }) 
        } 
    }) 
})

Your controller action can be something like,

get '/my_action', to: 'invoices#my_action' add this route.

defmy_actionif params[:company].present? 
        @company = current_user.companies.find(params[:company]) 
        @data = Hash.new 
        @data["btw_number"] = @company.btw_number 
        @data["iban_number"] = @company.iban_number 
        render json:@dataandreturnfalseendend

This action returns the vat_number and iban_number which should be displayed in the view depending in the selected value.

Solution 2:

Create a method on the customers model that concatenates this information together in a friendly, human-readable way:

deffriendly_info"#{company_name} (#{vat_number}) - IBAN #{iban_number}"end

Then use that method in your select statement in place of company_name.

Post a Comment for "Get And Display All Values From Database Row Separately Based On Select (rails)"