锁定老帖子 主题:check_box使用疑问
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-11-14
首先 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中该怎么正确编写这样的代码? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-11-15
你看一下生成的html就会发现你生成的checkbox都用的一样的id和name,因为你的循环里的check_box第一第二个参数都是常量。
一般以tag结尾的form helper适合处理单一的model对象(约定绑定到第一个参数的同名实例变量上)。 而处理一批的话可以在check_box_tag的第一个参数name中个别指定,然后在action里自己解析。 |
|
返回顶楼 | |
发表时间:2006-11-15
I met the same problem, I did not know how to do it, I just wrote the html code in the loop with id="id_<%= i %>", it worked.
Beginner's Hacker way! |
|
返回顶楼 | |
发表时间:2006-11-15
html基础不过关呀...
|
|
返回顶楼 | |
发表时间:2006-11-15
请参考一下http://wiki.rubyonrails.org/rails/pages/HowToUseCheckBoxes
|
|
返回顶楼 | |
发表时间:2006-11-15
<%=check_box_tag("my_data[#{id}]")%>
发送过去的是个hash。 |
|
返回顶楼 | |
发表时间:2006-11-15
qiezi 写道 <%=check_box_tag("my_data[#{id}]")%>
发送过去的是个hash。 <%for mydata in @my_data%> <%=check_box_tag("my_data[#{mydataid}]",mydata.id)%> <%end%> post的数据是 引用 "my_data"=>{"1"=>"1", "3"=>"3"}
如果这样写的话 <%for mydata in @my_data%> <%=check_box_tag("my_data#{mydata.id}",mydata.id)%> <%end%> post的数据是 引用 "my_data1"=>"1", "my_data3"=>"3"
写解析代码稍微有些差异。 |
|
返回顶楼 | |
发表时间:2006-11-15
jack 写道 qiezi 写道 <%=check_box_tag("my_data[#{id}]")%>
发送过去的是个hash。 <%for mydata in @my_data%> <%=check_box_tag("my_data[#{mydataid}]",mydata.id)%> <%end%> post的数据是 引用 "my_data"=>{"1"=>"1", "3"=>"3"}
如果这样写的话 <%for mydata in @my_data%> <%=check_box_tag("my_data#{mydata.id}",mydata.id)%> <%end%> post的数据是 引用 "my_data1"=>"1", "my_data3"=>"3"
写解析代码稍微有些差异。 hash方便遍历key呀。 忘了一个最好的办法了: <%= check_box_tag "my_data[]", mydata.id %> 发送过去的肯定是你最喜欢的 |
|
返回顶楼 | |
发表时间:2006-11-16
qiezi 写道 忘了一个最好的办法了: <%= check_box_tag "my_data[]", mydata.id %> 发送过去的肯定是你最喜欢的 你这样的代码没法子用,如果用在一个循环里面输出多个check_box,最后post的时候,只有一个数据提交。 |
|
返回顶楼 | |
发表时间:2006-11-16
jack 写道 qiezi 写道 忘了一个最好的办法了: <%= check_box_tag "my_data[]", mydata.id %> 发送过去的肯定是你最喜欢的 你这样的代码没法子用,如果用在一个循环里面输出多个check_box,最后post的时候,只有一个数据提交。 你真的试过了吗?还是凭自己的直觉? |
|
返回顶楼 | |