【发布时间】:2016-02-04 09:53:32
【问题描述】:
我正在使用 Braintree api 及其在 UI 中的 Drop,它工作正常,直到我得到不成功的响应。
ui 中的下降没有刷新(也许我需要做一些事情),这导致用户无法输入新卡的详细信息。我不想保留卡的详细信息,只需再次显示表单即可
我没有使用 turbolinks
def new
gon.client_token = generate_client_token
end
def create
@result = Braintree::Transaction.sale(
amount: amount,
payment_method_nonce: params[:payment_method_nonce],
customer: {
first_name: params[:first_name],
last_name: params[:last_name]
options: {
submit_for_settlement: true
}
)
if @result.success?
redirect_to thank_you_path
else
@error_message = BraintreeErrors::Errors.new.error_message(@result)
flash.now[:alert] = @error_message
gon.client_token = generate_client_token
render :new
end
end
我需要做些什么才能让它工作吗?
更新
与在 cmets 中一样,我可以重定向到新操作,重新加载我的页面,然后以 ui 表单显示我的下拉列表,所以为了扩展这个问题,如果我想保留用户填写的数据怎么办我表格的另一部分,比如姓名、地址等,我也不担心卡信息
我使用 form_tag
<%= form_tag transactions_path, class: 'form-small form' do %>
<%= text_field_tag :first_name, "", placeholder: 'First Name', required: false %>
<%= text_field_tag :last_name, "", placeholder: 'First Name', required: false %>
<% end %>
谢谢
【问题讨论】:
-
您是否考虑过重定向到新操作而不是呈现它的模板?
-
@Mihai-AndreiDinculescu 我已经更新了我的问题,在这种情况下如何保存表单数据?
-
您可以简单地将其作为实例变量传递,就像使用 client_token 一样。
-
谢谢,这在使用 form_tag 时可行吗?如果你能提供一个例子?非常感谢并帮助我理解,我可以使用
params[:first_name]获取单个参数,但我需要获取整个表单,真的不是吗? -
想想我可以通过
@result对象(如@result.transaction.customer_details)访问它们。只是如何让他们现在填充表单
标签: ruby-on-rails ruby ruby-on-rails-4 braintree