我有一個request
模型。當我從一個表單中創建一個新的request
時,如果「請求」模型中的某個項目爲真,那麼我想將用戶發送到收費頁面。然後我想要從request
的其中一個字段設置收費金額。我通過控制器做到這一點,但charge
沒有拿起request
的對象來從中獲取金額。這是我的request
控制器。當它通過這個request
新的充電路徑傳遞對象到另一個控制器在rails中
def create
@user = current_user
if @request = @user.request.create!(authorization_params)
if @request.must_pay == true
redirect_to new_users_charge_path(@request), :notice => "Please make payment before proceeding"
else
redirect_to users_dashboard_path, :notice => "Success"
end
else
redirect_to users_dashboard_path, :error => "Oops!"
end
def authorization_params
params.require(:request).permit(:field_1, :field_2, etc...)
end
所以,我想在付出了多少場了request
的,所以我的充電控制器看起來是這樣的。
def create
# Amount in cents
@request = Request.find(params[:id])
@user = current_user
@amount = @request.how_much_to_pay
customer = Stripe::Customer.create(
:email => @user.email,
:card => params[:stripeToken]
)
charge = Stripe::Charge.create(
:customer => customer.id,
:amount => @amount,
但我不斷收到錯誤undefined method `how_much_to_pay' for nil:NilClass
所以我不認爲其將請求傳遞給充電控制器。我錯過了什麼?
這裏是創建的費用表單。
<%= form_tag users_charges_path do %>
<article>
<label class="amount">
<span>Amount: <%= number_to_currency (@request.how_much_to_pay.to_i/100) %></span>
</label>
</article>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<%= Rails.configuration.stripe[:publishable_key] %>"
data-description="..."
data-amount="<%= @request.how_much_to_pay %>"
data-locale="auto"></script>
<% end %>
「authorization_params」在哪裏設置?你有沒有證實它不是空的? – Elvn
已更新的問題。 「authorization_params」位於請求控制器中 – SupremeA