给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