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」の後、 ticket id が取得されます。
  • 最終的にチケットが正常に購入され、支払い確認が届いたら、これrunning_transactionを としてマークしcompletedます。

おそらく、これらの情報を追跡するための何かがすでにあるので、その表にも上記の方法を適用できます。おそらく、私が提供したものよりも良い名前が見つかるでしょう:)

于 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 に答える