2017-03-03 11 views
0

使用しているモデルに関連付けられていないパラメータで特定のフォームを実行する必要があります。参照してください、私は私のコントローラ(と私は私のビューでは、特定の "注文"と "製品"の配列を参照することができます)。私の見解ではRuby on Rails、特定のURLへのフォーム内の参照カスタムパラメータ

#this controller responds to mydomain.com/new/order/:id_order 
class MyController < ApplicationController 
... 
    def my_page 
    @order = Order.find(params[:id_order]) 
    @products = Product.all 
    end 
... 
end 

iは、製品を「追加」するためにそれらの属性(名前、説明、価格)、次の各製品とのリンクに少数フィールドを持つすべての製品のリストをレンダリングする必要があります。

私の製品の各製品のすべての属性を表示するためにテーブルを作成できます。問題は、テーブルの各行の隣に数字フィールドを作成する方法と「追加」アクションへのリンクがわかりません。 、私のAPIにだけポイントである、

(別名 add_product_order として)mydomain.com/add/product/:id_order/:id_product/:amount: id_orderためのIDに対応(@ order.id)
:id_productは、tの特定の製品のIDに対応しています私が持っている行(product.id)
:金額は、ユーザーが指定した金額にする必要がありますが、私はどのようにビュー内でそれを参照するか分からない。それは私にエラーを与えるように、量パラメータを(しかし、私は、一定量を使用している場合:

レールヘルパーform_tagなど、のform_for ...私が必要となるので、しかし、私はadd_product_order_pathを使用するカントのデータを送信するためのURLが必要です1のように、それは動作します)。結論として

<% @products.each do |product| %> 
     <tr> 
      <td><%= product.name %></td> 
      <td><%= product.description %></td> 
      <td><%= product.price %></td> 
      <td><input type="number" name="amount" min="1"></td> 
      <td><%= link_to 'Add', add_product_order_path(id_order: @order.id, id_product: product.id, amount: *???*), method: :post %></td> 
     </tr> 
<% end %> 

にする必要がありますどのような?、amountフィールドの値をadd_product_order_pathに送信しますか?

+0

金額に数字ピッカーが表示されるようにしようとしていますか? –

+0

@maxpleはい、値を参照してAPIポイントに渡します –

答えて

0

したがって、値の入力値は不明です。私は非常にこれを達成するためにいくつかのJSを使用することをお勧めします。次のようなもの:

$('table td a').on('click', function(e) { 
    var amountVal = $(this).parent('tr').find('input').val(); 
    var newUrl = location.href.replace("amount=", "amount="+amountVal); 
    $(this).attr('href', newUrl); 
}); 

私はそれが役に立ちます。

UPDATE

申し訳ありませんが、did'ntはあなたがmethod: :postを使用している、これは非表示のフォームを生成することを見て、あなたは隠された入力値を変更する必要があります。

$('table td a').on('click', function(e) { 
    var amountVal = $(this).parent('tr').find('input').val(); 
    $(this).parent().find('input[name*="amount"]').val(amountVal); 
}); 
+0

アクションパスにすべての引数が必要なため、値を参照していないとフォームが機能しないため、フォームがありません –

関連する問題