2013-04-10 58 views
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页面中定义的静态。

+1

您的参数键中的冒号看起来不正确。 – 2013-04-10 12:00:09

回答

0

您可以创建类似于您正在尝试的动态哈希键,但语法稍微偏离。用途:

params[:"Prod#{i}"] 

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

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