Techioz Blog

Rails : ユーザー入力値を button_to に追加する方法

概要

現在 Stripe Checkout を使用しているので、[今すぐ支払う] ボタンに数量を追加したいと考えています。 私は今これをやっています

<%= button_to "Pay Now", checkout_create_path, params: {
        :article_id => @article.id}, remote: true %>

ユーザーが入力したフィールドをボタンの params に追加し、それをボタンの params: フィールドに追加するにはどうすればよいですか?

このようにそれは機能しません:

    <%= number_field :quantity, :class => "form-control" %>

解決策

リンク/ボタンにパラメータを追加する JS を書くこともできると思いますが、それはそれを行う方法ではありません。フォームを使用する方が良いでしょう:

<%= form_tag checkout_create_path, remote: true do %>
  <%= hidden_field :order, :article_id, value: @article.id %>
  <%= number_field :order, :quantity, :class => "form-control" %>

  <%= submit_tag "Pay Now" %>
<% end %>

これにより、コントローラーは次のパラメーターにアクセスできるようになります。

{"order"=>{"article_id"=>"1", "quantity"=>"3"} ...}

@order 変数を伴う Order の概念を持ち、form_for @order を使用することもできます。