在提交表格ROR之前添加参数

时间:2012-10-06 18:11:06

标签: ruby-on-rails ruby-on-rails-3 submit

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

我的问题是我需要将票证ID发送给我的付款控制人员。

可能是通过隐藏的输入字段发送它,但还有其他任何安全的方法来实现这一目标吗?

任何帮助将不胜感激。

感谢。

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

2 个答案:

答案 0 :(得分:2)

因此,您要生成以下表单提交所需的故障单ID。是最好将其保存在隐藏变量中。

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

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

如果可能,则在提交表单时生成票证ID 。这样就不存在将票证ID存储在隐藏变量或会话或数据库中的问题。

实际上可能还有很多其他方法,但要提供完整且具体的建议,请分享更多您的方案。


更新:

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

它会有

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

现在开始购买过程

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

您可能已经有了跟踪这些信息的内容,因此您也可以在该表中使用上述方法。也许你会找到比我提供的更好的名字:)

答案 1 :(得分: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 %>

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