在单个collection_select Rails中填充两列

时间:2010-10-01 09:40:53

标签: ruby-on-rails

查看

<%= collection_select(@table, "sp", @pops, "col2", "col2", {:prompt => "Select one"}) %>

控制器

@pops = Table.find(:all, :conditions=>{:col1 => "xyz"}, :order=> 'col2', :select=> 'DISTINCT col2')

这是我现有的代码。我正在收集column2中的值并填充它。 现有的填充值为(col2a,col2b,col2c)

现在,我希望在一个collection_select中填充两列col2和col3。我希望像人一样 (col2a [col3a],col2b [col3b],col2c [col3c])。请给我一个想法,在单一集合中填充两列选择

3 个答案:

答案 0 :(得分:6)

在Table模型中,添加以下方法(将其命名为适合您应用的任何内容,我将其命名为“combined_value”)

def combined_value
  "#{self.col2}[#{self.col3}]"
end

在视图中,collection_select如下

<%= collection_select(@table, "sp", @pops, "combined_value", "col2", {:prompt => "Select one"}) %>

生成的HTML将如下所示

<select name="table[sp]">
  <option value="">Select one</option>
  <option value="col2a[col3a]">col2a</option>
  <option value="col2b[col3b]">col2b</option>
  <option value="col2c[col3c]">col2c</option>
</select>

这就是你想要的吗?

答案 1 :(得分:1)

那么你使用col2作为键,col3作为值吗? Hash[*col2.zip(col3)]

答案 2 :(得分:-1)

在Table模型中,添加以下方法(将其命名为适合您应用的任何内容,我将其命名为“combined_value”)

def combined_value   “#{self.col2} [#{self.col3}]” 端

在视图中,collection_select如下

&lt;%= collection_select(@ table,“sp”,@ pops,“col2”,“combined_value”,{:prompt =&gt;“选择一个”}}%&gt;

生成的HTML将如下所示

  选择一个   col2a [col3a]   col2b [col3b]   col2c [col3c]

这是我想要的......我的问题可能会让某些人感到困惑......对不起......上帝感谢Hoa ...它的工作是我的要求......