ruby on rails - proyecto - guardar los valores booleanos en la base de datos postgres usando ruby on rails
rails new myapp postgresql (1)
Entonces, ¿desea saber si el producto será recogido en la tienda o enviado por correo electrónico correctamente?
Ya que estás perdido, una solución más simple sería:
1 - Cambie el t.boolean "pick_up" a t.string "pick_up"
2 - use esta http://guides.rubyonrails.org/form_helpers.html#the-select-and-option-tags , para crear una lista con estas dos opciones.
3 - En su controlador guarde la opción que el usuario quiere.
Creo que para usar botones de opción, debes tener dos campos en tu base de datos. Algo como esto:
t.boolean "pick_up" t.boolean "sent_email"
si el usuario elige recoger, recibirá un parámetro con un valor verdadero para recoger, luego puede guardar en su base de datos. ¡Así que esta es otra opción también!
Espero eso ayude.
He estado trabajando en un viejo proyecto de rieles por un tiempo. Como no he trabajado con rieles en algún momento, estoy un poco oxidado y necesito ayuda en el camino.
El caso es que estoy agregando opciones de recogida a una web de comercio electrónico.
El back-end es manejado por active admin
Cuando el cliente está revisando su producto. Tiene la opción de recogerlo en la tienda o enviarlo.
Y quiero que la orden muestre en el back-end si el producto debe enviarse o si se recoge en la tienda.
Estoy como atrapado aquí, y las opciones de entrega no parecen estar guardando en la base de datos ... Sería tan agradable si alguien pudiera ayudarme con esto.
aquí está el html para la opción de recoger. está ubicado en 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>
y aquí hay una parte del archivo 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
Y aquí está el 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
Y aquí está la 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