ruby on rails पल्स पर रब्बी का इस्तेमाल करते हुए डाटाबेस डेटाबेस के लिए बूलीयन मान की बचत करना



ruby-on-rails postgresql (1)

मैं थोड़ी देर के लिए एक पुरानी रेल परियोजना पर काम कर रहा हूं। चूंकि मैंने कुछ समय में रेल के साथ काम नहीं किया है, इसलिए मैं थोड़ी सी जंगली हूँ और रास्ते में कुछ मदद की ज़रूरत है।

बात यह है कि मैं एक ई वाणिज्य वेब को पिकअप विकल्प जोड़ रहा हूं

बैकएंड active admin द्वारा संचालित होता active admin

जब ग्राहक अपने उत्पाद की जांच कर रहा है उसे स्टोर में लेने का विकल्प मिलता है या इसे भेजा जाता है।

और मैं बैकेंड में यह दिखाने के लिए चाहता हूं कि क्या उत्पाद भेजा जाना चाहिए या अगर वह दुकान में उठाया जाए।

मैं यहां पर अटक गया हूं, और डिलीवरी के विकल्प डेटाबेस को सहेजने में नहीं लगता .... यह बहुत अच्छा होगा अगर कोई मुझे इसके साथ मदद कर सकता है।

पिकअप ऑप्शन के लिए यहां html है। यह views/orders/_form.html.erb में स्थित है

<div class="col-md-5 pick-up-buttons" id="country_div">
  <li>
    <%= f.radio_button :pick_up, "1", checked: false, data: { question: "Pick up your items in the store" } %> 
    <%= f.label :pick_up, "Pick up your items in the store" %>
  </li>
  <li>
    <%= f.radio_button :pick_up, "0", checked: true,  data: { question: "Send the items by mail" } %> 
    <%= f.label :pick_up, "Send the items by mail" %>
  </li>
</div> 

और यहां schema.rb फ़ाइल का एक हिस्सा है

create_table "orders", force: :cascade do |t|
  t.string   "name"
  t.string   "email"
  t.text     "address"
  t.string   "city"
  t.string   "country"
  t.datetime "created_at",                 null: false
  t.datetime "updated_at",                 null: false
  t.boolean  "shipped",    default: false
  t.boolean  "pick_up",    default: false
  t.string   "delivery"
end

और यहां orders_controller.rborders_controller.rb

class OrdersController < ApplicationController
  include CurrentCart
  before_action :set_cart, only: [:new, :create]
  before_action :set_order, only: [:show, :edit, :destroy]

  def index
    @orders = Order.all? 
  end

  def new
    @images  = ["1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg"]
    @random_no = rand(5)
    @random_image = @images[@random_no]

    if @cart.product_items.empty?
      redirect_to root_url, notice: 'Your Cart is Empty'
      return
    end

    @order = Order.new
    @client_token = Braintree::ClientToken.generate

    @del_cost_euro = 20
  end

  def create
    @order = Order.new(order_params)
    if @order.save
      charge
      if @result.success?
        @order.add_product_items_from_cart(@cart)
        Cart.destroy(session[:cart_id])
        session[:cart_id] = nil
        OrderNotifier.received(@order).deliver 
        redirect_to root_url, notice: 'Thank You for Your Order'
      else
        flash[:error] = 'Please Check Your Cart'
        redirect_to root_url, alert: @result.message
        @order.destroy
      end
    else
      @client_token = Braintree::ClientToken.generate
      render :new
    end
  end

  def show
  end

  def destroy
    @order.destroy
    redirect_to root_url, notice: 'Order deleted'
  end

  private
  def set_order
    @order = Order.find(params[:id])
  end

  def order_params
    params.require(:order).permit(:name, :email, :address, :city, :country, :pick_up, :delivery)
  end

  def charge
    @result = Braintree::Transaction.sale(
      amount: @cart.total_price_usd,
      payment_method_nonce: params[:payment_method_nonce] )
  end
end

और यहां app/admin/order.rb

ActiveAdmin.register Order do

permit_params :shipped

after_update do |order|
  OrderNotifier.shipped(@order).deliver if order.shipped
end

show do |order|
  panel 'Customer Details' do
    attributes_table_for order, :name, :email, :address, :city, :country
  end

  panel 'Created' do
    "#{time_ago_in_words order.created_at} ago"
  end

  panel 'Shipped' do
    order.shipped
  end

  panel 'delivery' do
    order.pick_up
  end

  panel 'Order Details' do
    table_for(order.product_items) do 
      column 'Product' do |item|
        item.product.title
      end

      column 'Quantity' do |item|
        item.quantity
      end

      column 'Price Euro' do |item|
        number_to_currency item.total_price_eur
      end

      column 'Price USD' do |item|
        number_to_currency item.total_price_usd
      end
    end
  end

  panel 'Order Total USD' do 
    number_to_currency order.total_price_usd
  end

  panel 'Order Total Euro' do 
    number_to_currency order.total_price_eur
  end
end

तो क्या आप जानना चाहते हैं कि उत्पाद को स्टोर में उठाया जा रहा है या ईमेल द्वारा सही भेजा गया है?

चूंकि आप खो चुके हैं, एक सरल समाधान होगा:

1 - टी। बोरियन "पिक_अप" को टी। स्ट्रिंग "पिक_अप" में बदलें

2 - इस दो विकल्पों के साथ एक सूची बनाने के लिए http://guides.rubyonrails.org/form_helpers.html#the-select-and-option-tags का उपयोग करें।

3 - अपने नियंत्रक में उपयोगकर्ता विकल्प चाहता है

मुझे लगता है कि रेडियो बटन का उपयोग करने के लिए, आपके पास अपने डेटाबेस में दो फ़ील्ड होने चाहिए। कुछ इस तरह:

टी। बूलियन "पिक_ुप" टी। बूलियन "भेजा गया"

अगर उपयोगकर्ता चुनने के लिए चुनते हैं, तो आप लेने के लिए एक सच्चे मूल्य के साथ एक परम प्राप्त करेंगे, फिर आप डेटाबेस को बचा सकते हैं। तो यह एक और विकल्प भी है!

आशा करता हूँ की ये काम करेगा।





e-commerce