打印

如何使用checkbox

如何使用checkbox

给check box添加名字和付值:
<%= check_box('item_'+i.to_s, 'checked', {}, item.name, '') %>
可以使用action来获取数值:
checked = @params['item_'+i.to_s]['checked']

我们可以使用任何值付给check box. 可以是flag, id 或者其他的值。下面的例子使用virtual list.
Model:

item.rb
class Item
 def initialize(name)
  setName(name)
  setChecked('')  # set to empty for an unchecked Checkbox
 #setChecked(name) # set to not empty for a checked Checkbox
 end 
 def setChecked(checked)
  @checked = checked
 end 
 def checked
  @checked
 end
 def setName(name)
     @name = name
 end 
 def name
  @name
 end
end

View:

list.rhtml
<h1>Item#list</h1>
<form action='<%= url_for(:action => "deleteSelection") %>' method='POST'>
<table border="1" cellspacing="2" cellpadding="2" width="30%">
 <tr><th width="5%">Selection</th><th align="left" width="25%">Name</th></tr>
<% i = 0
  for item in @itemlist do
  i = i + 1 %>
  <tr>
   <td><%= check_box('item_'+i.to_s, 'checked', {}, item.name, '') %></td>
   <td><%= item.name %></td>
  </tr>
<% end %>
</table>
<br/>
<input type='submit' value='DELETE SELECTION'/>
</form>

Controller
item_controller.rb

#require 'item'
class ItemController < ApplicationController
    def initialize
  super
     @itemlist = [Item.new('item1'), Item.new('item2'), Item.new('item3'), Item.new('item4'), Item.new('item5')]
 end
 def list
    @itemlist
 end
 def deleteSelection
  i = 0
    items = @itemlist.clone
    items.each { |item|
     i = i + 1
  if (@params['item_'+i.to_s] != nil) then
   checked = @params['item_'+i.to_s]['checked']
   if (checked != nil && checked.length > 0) then
    if (item.name == checked) then
    @itemlist.delete(item)
    end
   end
  end 
  }
    render_action 'list'
 end
end

thanks to http://wiki.rubyonphp?name=rails" onclick="tagshow(event)" class="t_tag">rails.org/php?name=rails" onclick="tagshow(event)" class="t_tag">rails/pages/HowToUseCheckBoxes
本帖最近评分记录
  • drive2me 威望 +10 谢谢! 2008-8-13 13:45
  • drive2me R币 +10 谢谢! 2008-8-13 13:45
  • drive2me 贡献 +10 谢谢! 2008-8-13 13:45

TOP

噢噢,很实用的例子。

谢谢。

xinhao,你忙完了?又看到你回来了,呵呵。
Flying Piggy...! 
天地人合一!

TOP

一边忙,一边翻译。这就是生活呀

TOP

引用:
原帖由 xinhao 于 2008-8-18 23:21 发表
一边忙,一边翻译。这就是生活呀
生活就是这么无奈。

TOP

也很充实的呀!
Flying Piggy...! 
天地人合一!

TOP

2008-11-18 17:23 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.57