のように継承しているこんにちは私はユーザーがチェックアウトしているときに私のウェブサイトで問題になってきました。ユーザーが作成またはサインインすると、すべてのユーザーにカートが表示されます。アプリケーションコントローラに含まれているセッションヘルパー内のcurrent_userのインスタンスです。ユーザーは、彼らが彼らのカート内の項目を配置した後、私は「#のために未定義のローカル変数やメソッド 『CURRENT_USER』」のエラーを参照してください彼らの順序を置くことになるとこれは注文モデルであるコードです未定義のローカル変数またはメソッドの `current_user 'を
def add_line_items_from_cart(cart)
current_user.cart.line_items each do |item|
item.cart_id = nil
line_items << item
end
私は私はcurrent_user.cartが動作していると思ったので、少し混乱しました。ここ は私の受注コントローラ
class OrdersController < ApplicationController
include CurrentCart
before_action :set_cart, only: [:new, :create]
before_action :set_order, only: [:show, :edit, :update, :destroy]
def new
if current_user.cart.line_items.empty?
redirect_to root_path, notice: "Your cart is empty"
return
end
@order = Order.new
end
def create
@order = Order.new(order_params)
@order.add_line_items_from_cart(@cart)
respond_to do |format|
if @order.save
current_user.cart.destroy
session[:cart_id] = nil
format.html { redirect_to root_path, notice:
'Thank you for your order.'}
format.json { render action: 'show', status: :created,
location: @order}
else
format.html {render action: 'new'}
format.json {render json: @order.errors,
status: :unprocessable_entity}
end
end
end
private
def order_params
params.require(:order).permit(:name, :address, :email, :pay_type)
end
end
、これはそれが非常に参考になる機能しない理由誰も私に説明することができた場合は、ユーザーが注文
<%= form_for(@order) do |f|%>
<% if @order.errors.any?%>
<div id="error_explanation">
<h2> <%= pluralize(@order.errors.count, "error")%>
prohibited this order from being saved:</h2>
<ul>
<% @order.errors.full_messages.each do |msg| %>
<li><%= msg%></li>
<%end%>
</ul>
</div>
<%end%>
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name, size: 40%>
</div>
<div class="field">
<%= f.label :address %><br>
<%= f.text_area :address, rows: 3, cols: 40%>
</div>
<div class="field">
<%= f.label :email %><br>
<%= f.email_field :email, size: 40%>
</div> </div>
<div class="field">
<%= f.label :pay_type %><br>
<%= f.select :pay_type, Order::PAYMENT_TYPES,
prompt: 'Select a payment method'%>
</div>
<div class="actions">
<%= f.submit 'Place Order' %>
</div>
<%end%>
を配置することができたときのための部分的な私のためです。
Deviseを使用していますか? current_userはコントローラでのみ利用可能なデバイスヘルパーです –
いいえ私はbcryptを使用しています自分で現在のユーザメソッドを作成しました – Dan