欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

check_box使用疑问 RailsRubyjsonHTML 

程序员文章站 2022-05-31 12:38:08
...
在准备做一个多选form时,check_box在使用上有不少问题,不知道如何解决?下面是试验过程

首先 controller中的代码如下
@my_data = MyTables.find(:all)


第一次:view的form中则准备这样写
<%for mydata in @my_data%>
<%=check_box("mydata","id")%>
<%end%>

当然这样写是有问题的,render过程中会尝试调用@mydata.id,不过代码中没有@mydata存在。运行时就会出错

第二次:
<%for mydata in @my_data%>
<%=check_box("my_data","id")%>
<%end%>


这次@my_data是存在了,可是@my_data是一个Array,Array可没有id函数。还是出错。

第三次:这次加入了个index属性
<%@my_data.each_with_index do |data,index|%>
<%=check_box("my_data","id",{"index"=>index})%>
<%end%>


id函数的问题始终存在,最终为了render成功,改成了下面两种代码

id改成array有的函数,就用size吧
<%@my_data.each_with_index do |data,index|%>
<%=check_box("my_data","size",{"index"=>index})%>
<%end%>

或者
<%=check_box("my_data11","id",{"index"=>index})%>

这两种代码,render是成功了。还是有问题。

当多选几个check_box之后,单击post按钮。无论怎么样,controller都没有收到选中状态数据。观察log,的确,post的数据中,没有一个是选中数据。
也就是说 checkbox是都显示出来了,不过只能看,不能用。

后来也尝试了下check_box_tag,稍微有所不同,post到controller的数据只有多个选中的其中一个,数据不全。也不能用。

这个rails的check_box,和check_box_tag,在这类使用循环生成form数据的代码中,难道完全不能使用吗?
循环生成多个check_box的需求还是常见的很,rails中该怎么正确编写这样的代码?