Tôi đã làm việc trên một dự án đường ray cũ một chút. Vì tôi đã không làm việc với đường ray trong một thời gian tôi là một chút gỉ và cần một số trợ giúp trên đường đi.lưu các giá trị boolean vào cơ sở dữ liệu postgres bằng ruby trên đường ray
Điều tôi đang thêm tùy chọn nhận vào trang web Thương mại điện tử.
Backend được thúc đẩy bởi active admin
Khi khách hàng được kiểm tra ra sản phẩm của mình. Anh ấy có tùy chọn để chọn nó trong cửa hàng hoặc gửi nó.
Và tôi muốn thứ tự hiển thị trong phần phụ trợ cho dù sản phẩm có được gửi hay không nếu sản phẩm được chọn tại cửa hàng.
Tôi bị kẹt ở đây và tùy chọn phân phối dường như không được lưu vào cơ sở dữ liệu .... Sẽ thật tuyệt nếu ai đó có thể giúp tôi với điều này.
đây là html cho tùy chọn nhận. nó nằm ở 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>
và đây là một phần của schema.rb
tập tin
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
Và đây là 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
Và đây 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
Bạn đã thử sử dụng radio_button_Tag chưa? https://apidock.com/rails/ActionView/Helpers/FormTagHelper/radio_button_tag –
Một điều khác, bạn có nghĩ rằng nút radio là chính xác cho chức năng này không? Một trình đơn thả xuống được chọn sẽ không tốt hơn? –
Xin chào @GabrielMesquita không, tôi chưa từng sử dụng 'radio_button_Tag' ... Tôi không chắc chắn điều gì là đúng cho chức năng này, có thể trình đơn thả xuống được chọn sẽ tốt hơn.Tôi nhận được loại bị mất trong tất cả này :) Bạn có thể đăng bài như thế nào bạn sẽ làm điều này? – codegirl