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 中的真实值,因此您应该明确检查"1"或检查您在表单中提供的任何检查值。检查您的日志并查看表单提交的内容以确保确定。

于 2013-04-10T13:12:20.023 回答