Ruby on Rails Thursday, January 4, 2018

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.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/dd97c114-88ab-4ad4-b914-1ee7c3b2cc84%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment