Abdul Mukheem Shaik

Joined

60 Experience
0 Lessons Completed
0 Questions Solved

Activity

Posted in Create dynamic table for existing resource

Hello Simon,

Good day..!!!

are you worrying only regarding Front end or back end architecture as well ?

Regards,
Mukheem

Hello,

Myself Mukheem. I have just started working with Ruby on Rails.

I am trying to create a small billing application where a receptionist can bill the items and give the receipt to customer.

Now, I wanted to white list all the items from HTML table from front end and save them to DB, JSONB format in a record.

White listing a text_field is easy. but I dont know how to do it when the same is present in a HTML table.
Some how i managed to reach till this point. Rest of the details are as follows.

HTML Code

<tr>
            <td><input id="order[orderplaced][:itemname][0]" name="order[orderplaced][:itemname][0]" type="text" /></td>
            <td><input id="order[orders_attributes][0][quantity]" name="order[orderplaced][:quantity][0]" type="text" /></td>
            <td><input id="order[orders_attributes][0][unitprice]" name="order[orderplaced][:unitprice][0]" type="text" /></td>
            <td><input id="order[orders_attributes][0][tax]" name="order[orderplaced][:tax][0]" type="text" /></td>
            <td><input id="order[orders_attributes][0][discount]" name="order[orderplaced][:discount][0]" type="text" /></td>
            <td><input id="order[orders_attributes][0][itemtotalprice]" name="order[orderplaced][:itemtotalprice][0]" type="text" /></td>
        </tr>

Only one row is static, rest rows are added dynamically on the fly as per need(Java script is used).
I came to know that there are a few changes which needs to be made in front end code as well. but I am not sure in which format rails expect. :(

Controller Code

class OrdersController < ApplicationController

    def new
        @order=Order.new
    end

    def create
        @order=Order.new(fixed_order_params)
        @order.save
    end

    private
        def order_params
            params.require(:order).permit(:ordertype, :totalprice, :paymentmethod, {orderplaced: {":itemname": ["0"], ":quantity": ["0"], ":unitprice": ["0"], ":tax": ["0"], ":discount": ["0"], ":itemtotalprice": ["0"]}})
        end


        def orderplaced_params
          order_params[:orderplaced].to_h.map do |order_line_item|
            order_line_item.each_with_object({}) do |(k,v), hsh|
              hsh[k.gsub(":","")] = v["0"]
            end
          end
        end

        def fixed_order_params
            order_params.slice(:ordertype, :totalprice, :paymentmethod).merge!(orderplaced: orderplaced_params)
        end

    end

Error recieved in orderplaced_params method

NoMethodError (undefined method[]' for nil:NilClass):

Pathforward

I wanted to save array of hashes to DB, JSONB format and display them to the receptionaist on Demand.

Can some one help me please.

Advance Thanks....!!!!
Mukheem.