选择ruby on rails上的复选框值

时间:2013-04-10 11:41:28

标签: ruby-on-rails ruby checkbox

我的html页面中有5个静态复选框。 当我点击提交按钮时,我想获得所选复选框的值。

以下是我的代码段,请在错误的地方纠正我。

for 101 in 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页面中定义了静态。

1 个答案:

答案 0 :(得分:0)

您可以创建类似于您尝试的动态哈希键,但语法略有不同。使用:

params[:"Prod#{i}"]

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

请注意,除非您在视图中设置了自己,否则该值不是"selected"。根据您是否使用帮助程序创建复选框以及您可能正在使用哪些帮助程序/宝石,值可能会有所不同。如果你没有覆盖它,你可能会为复选框获得“1”。对于未选中的框,您可能会得到“0”,但默认情况下,浏览器不会为未选中的框发送任何,因此该参数可能根本不存在。一些表单助手通过使用隐藏的表单字段欺骗浏览器发送“0”。另请注意,"0"在Ruby中是真正的值,因此您应该明确检查"1"或您在表单中提供的任何检查值。检查您的日志并查看表单提交的内容以确定。