私は古いレールプロジェクトを少し手伝ってきました。私はしばらくレールで作業していないので、少し錆びており、道に沿って助けが必要です。ruby on railsを使ってboolean値をpostgresデータベースに保存する
私はEコマースWebにオプションを追加しています。
顧客がその製品をチェックアウトした場合、バックエンドは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>
、ここにあります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
そして、ここでは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
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
そして、ここの一部ですされます
radio_button_Tagを使用しようとしましたか? https://apidock.com/rails/ActionView/Helpers/FormTagHelper/radio_button_tag –
もう1つのことは、ラジオボタンがこの機能に適していると思いますか?選択ドロップダウンはうまくいかないでしょうか? –
こんにちは@GabrielMesquitaいいえ私は 'radio_button_Tag'を使用していません...私はこの機能のために何が正しいかわからない、多分選択ドロップダウンは良いでしょう。私はこのすべての失われたの種類を取得しています:)あなたはこれを行う方法を投稿できますか? – codegirl