0

可以在提交表单之前添加一些参数吗?

我的问题是我需要将票证 ID 发送到我的支付控制器。

一种可能性是通过隐藏的输入字段发送它,但是还有其他安全的方法可以实现这一点吗?

任何帮助将不胜感激。

谢谢。

购票过程 0) 选择活动 1) 用户选择他想购买的票种。2)用户添加他的个人信息 3)最后结帐(支付控制器)

4

2 回答 2

2

因此,您正在生成您需要在以下表单中提交的票证 ID。是的,最好将其保存在形式中的隐藏变量中。

但除此之外,您可以将生成的票证 ID 存储在会话中,并在使用后销毁。

如果此票证 ID 对于特定会话一次是唯一的,那么您可以使用会话 ID 的键将其存储在数据库中,并且可以在提交表单时检索和清除 ID。

如果可能,则在提交表单时生成票证 ID。通过这种方式,无需将票证 ID 存储在隐藏变量或会话或数据库中。

实际上可能还有很多其他方法,但对于完整和具体的建议,请分享更多您的场景。


更新:

根据您的更新,我认为您需要维护一张running_transactions表格。

它将有

  • event_id(指向选定的事件)
  • ticket_type_id(指向用户想要购买的票种)
  • ticket_id(由您的算法生成的唯一 ID)
  • person_details(指向用户提供的详细信息)
  • 等等(可能包括其他付款或交易状态相关信息)
  • id:此表的唯一标识符。

现在开始购买过程

  • 创建一个running_transaction几乎为空的条目。
  • 将此表的 id 保存在会话中。running_transaction因此,对于每个后续请求,您都会通过此 ID找到相应的条目。
  • 此条目将在购买门票的每个阶段更新为更多值。就像,在“第 1 步”之后,您将有一个票证 id
  • 最终,当您成功购票并收到付款确认时,您将其标记running_transactioncompleted

可能您已经有一些东西可以跟踪这些信息,因此您也可以在该表中适应上述方式。也许你会找到比我提供的更好的名字:)

于 2012-10-06T18:46:42.343 回答
0

我已经在我拥有的应用程序中完成了此操作。

<td><%= @competencys[index].name %></td>
<%= f.hidden_field :student_id %>
<td>
  <%= f.radio_button :score, '4' %>
  <%= f.hidden_field :rating_id, :value => @competencys[index].ratings[0].id %>
  <%= @competencys[index].ratings[0].description %>
</td>

这可能有点难以理解,但在这种情况下,我正在创建一个结果,它有一个 student_id 字段和一个 rating_id 字段。在 student_id 的情况下,这个字段已经与 :student_id 符号(来自控制器)相关联,所以我只是用 f.hidden_​​field 将它分配到“幕后”

在 rating_id 的情况下,我无法在控制器中分配它,需要“即时”进行,因此代码......

<%= f.hidden_field :rating_id, :value => @competencys[index].ratings[1].id %>

所以在这里你可以看到我正在使用这个 :value 符号来直接在视图中分配 rating_id。不确定这是否有帮助,但我想我会分享。祝你好运!

于 2012-10-07T15:35:15.157 回答