0

HTMLページに5つの静的チェックボックスがあります。そして、送信ボタンをクリックしたときに、選択したチェックボックスの値を取得したいと思います。

以下は私のコードスニペットです。間違っているところを修正してください。

私のために 101..105

  if (params[":Prod"+i] == 'selected')
    @userid=session[:userid].to_i
    @prodid="Prod"+i.to_i
    @prodname=params[":ProdName"+i].to_s
    @price=params[":Price"+i].to_i
    @qty=params[":qty"+i].to_i
    @Products=Product.create :UserId =>@userid, :ProductId =>@prodid, :ProductName     =>@prodname, :Price =>@price,:Quantity =>@qty

    if @Products.save
      redirect_to viewcart_path
    else
      render products_path
   end

  end

注: 私のチェックボックス ID は Prod101、Prod102、Prod103、Prod104、および Prod105 で、HTML ページで静的に定義しています。

4

1 に答える 1

0

試しているものと同様の動的ハッシュキーを作成できますが、構文は少し異なります。使用する:

params[:"Prod#{i}"]

また

params["Prod#{i}".to_sym]

ビューで自分で設定しない限り、値はそうではないことに注意してください"selected"。チェックボックスの作成にヘルパーを使用しているかどうか、および使用している可能性があるヘルパー/ジェムによって、値は異なる場合があります。チェックボックスをオーバーライドしていない場合、チェックボックスに対して「1」を取得する可能性があります。チェックされていないボックスに対して「0」を取得する場合がありますが、デフォルトでは、ブラウザーはチェックされていないボックスに対して何も送信しないため、パラメーターがまったく存在しない可能性があります。一部のフォーム ヘルパーは、非表示のフォーム フィールドを使用してブラウザをだまして「0」を送信させます。また"0"、Ruby では true の値であるため"1"、フォームで指定した値を明示的に確認する必要があります。ログを確認し、フォームが送信する内容を確認してください。

于 2013-04-10T13:12:20.023 に答える