ruby-on-rails - true - sql boolean type



enregistrer des valeurs booléennes dans la base de données postgres en utilisant ruby ​​sur rails (1)

Donc, vous voulez savoir si le produit va être ramassé au magasin ou envoyé par e-mail correct?

Puisque vous êtes perdu, une solution plus simple serait:

1 - Changez le "pick_up" de t.boolean en t.string "pick_up"

2 - utilisez ce http://guides.rubyonrails.org/form_helpers.html#the-select-and-option-tags , pour créer une liste avec ces deux options.

3 - Dans votre contrôleur, enregistrez l'option souhaitée par l'utilisateur.

Je pense que pour utiliser les boutons radio, vous devez avoir deux champs dans votre base de données. Quelque chose comme ça:

t.boolean "pick_up" t.booléen "envoyé_email"

Si l'utilisateur choisit de ramasser, vous recevrez un param avec une valeur réelle pour le ramassage, alors vous pouvez enregistrer sur votre base de données. Donc, ceci est une autre option aussi!

J'espère que cela aide.

J'ai travaillé sur un vieux projet de rails pour un peu maintenant. Comme je n'ai pas travaillé avec des rails depuis quelque temps, je suis un peu rouillé et j'ai besoin d'aide en cours de route.

La chose est que j'ajoute une option de ramassage à un site Web de commerce électronique.

Le backend est piloté par active admin

Lorsque le client vérifie son produit. Il obtient l'option de le ramasser dans le magasin ou de l'envoyer.

Et je veux que la commande montre dans le backend si le produit devrait être envoyé ou s'il est ramassé au magasin.

Je suis coincé ici, et les options de livraison ne semblent pas être sauvegardées dans la base de données ... Ce serait très bien si quelqu'un pouvait m'aider avec ça.

Voici le code HTML pour l'option de ramassage. il est situé dans les 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> 

et voici une partie du fichier 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

Et voici le orders_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

Et voici l' 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




e-commerce