我无法将非模型表单字段从视图传递到控制器。我试图传递的值是amount
谢谢。
视图/捐赠/ index.html.erb
<%= form_tag donations_path, style: (current_user.card_last4? ? "display:none" : nil) do %>
<div id="error_explanation">
<% if flash[:error].present? %>
<p><%= flash[:error] %></p>
<% end %>
</div>
<article>
<%= label_tag(:amount, 'Donation Amount:') %>
<%= text_field_tag(:amount) %>
</article>
<%= link_to 'Donate', new_donation_path(amount: :amount), class: 'btn btn-primary', id: 'donateButton' %>
<% end %>
控制器/ donations_controller.erb
def create
customer = current_user.stripe_customer
amount = params[:amount]
token = params[:stripeToken]
begin
Charge.charge(amount, token)
end
...
模型/ charge.rb
def self.charge(amount, token)
charge = Stripe::Charge.create(
amount: amount,
source: token,
currency: 'usd',
description: 'Test Charge'
)
end
...
答案 0 :(得分:1)
使用像
这样的视图标记<%= text_field_tag 'donation[amount]' %>
并允许控制器中的参数
def donation_params
params.require(:donation).permit(:amount)
您可以使用donation_params[:amount]
访问该值。
答案 1 :(得分:1)
您不应该使用link_to
来触发表单提交。请改用submit_tag
。除此之外,请确保您的强力参数列入白名单,无论您提交的是什么。
答案 2 :(得分:0)
我猜你没有使用强大的参数。为什么不添加| f |最后像这样
<%= form_tag donations_path, style: (current_user.card_last4? ? "display:none" : nil) do |f| %>
然后使用<%= f.text_field :amount %>
然后在params你应该做params["donation"]["amount"]
之类的事来获得值
编辑:最后更改link_to
f.submit