我的表单中有以下选择框:
Related Type: <%= f.select(:TYPE, [['Type A', 'Type A'],
['Type B', 'Type B'],
['Type C', 'Type C'],
['Type D', 'Type D'],
['Type E', 'Type E']
],{ :prompt => "Please select"}
) %>
Run Code Online (Sandbox Code Playgroud)
我想允许用户进行多项选择,并且还可以选择框5的大小.
如何为上面的代码执行此操作?
mik*_*kej 79
你的后{ :prompt => "Please select"}加用HTML选项例如,另一个哈希
<%= f.select(:TYPE, [['Type A', 'Type A'],
['Type B', 'Type B'],
['Type C', 'Type C'],
['Type D', 'Type D'],
['Type E', 'Type E']
],{ :prompt => "Please select"},
{ :multiple => true, :size => 5 }
) %>
Run Code Online (Sandbox Code Playgroud)
一旦你完成了这个,你可能想要移动你的:prompt选项({}尽管保持空,以便html属性不会被视为Rails选项.)
此外,您还需要确保控制器代码正确接受和处理多个值.
小智 9
如果是收集,请尝试
<%= f.select(:TYPE, Categories.collect {|p| [ p.name, p.id ] },
{ :prompt => "Please select"},
{ :multiple => true, :size => 5 }) %>
Run Code Online (Sandbox Code Playgroud)
我有一个完整的工作示例(包括编辑对象时的预选),时间:
Object 是被认为是对象similar_ids 是关系的关键,是一个关键 string形式如下:
form_for(@object) do |f|
= f.select :similar_ids, options_from_collection_for_select(Object.all, :id, :name, {:selected => @object.similar_ids.split(';')}), {}, {:multiple => true, :size => 4, :name => 'object[similar_ids][]'}
Run Code Online (Sandbox Code Playgroud)
在Object.rb模型中:
class Object < ActiveRecord::Base
before_save :handle_similars
def handle_similars
self.similar_ids = self.similar_ids.select(&:present?).join(';')
# .select(&:present?) is necessary to avoid empty objects to be stored
end
def similars
self.class.find(self.similar_ids.split(';'))
end
end
Run Code Online (Sandbox Code Playgroud)
这些帖子帮助了我:
希望能帮助到你
| 归档时间: |
|
| 查看次数: |
68080 次 |
| 最近记录: |