MBH*_*NYC 3 ruby-on-rails-3 simple-form
希望这不是太复杂..
所以我有一个具有大量属性的模型,我决定将其作为索引存储在数据库中,该索引引用模型中的常量:
class Profile < ActiveRecord::Base
STATUS_CHOICES = %w( single relationship married divorced complicated open )
etc...
Run Code Online (Sandbox Code Playgroud)
以我的形式,我现在正在这样做:
= f.simple_fields_for :profile do |p|
= dp.input :relationship_status, :required => true, :collection => Datingprofile::STATUS_CHOICES
Run Code Online (Sandbox Code Playgroud)
这很好地显示了集合,但当然,需要根据模型中的索引设置值.如何设置集合上的值以对应STATUS_CHOICES数组的正确索引?
更新:重新构建此设置以使枚举属于实际的AD对象
模型
某种常量哈希:
HASH_NAME = {
0 => "Choose:",
1 => "On-Campus Recruiting - CSO",·
2 => "CSO Staff Referral",
3 => "Faculty Contact",·
4 => "Career Day",·
5 => "CSO Summer Job Listing",·
6 => "Alumni Contact",·
7 => "Personal Contact",·
8 => "Other"·
}
Run Code Online (Sandbox Code Playgroud)
- 查看
<%= f.input :some_field, :collection => Model::HASH_NAME.sort.map {|k,v| [v,k]} %>
Run Code Online (Sandbox Code Playgroud)
这将输出nice select,select-value作为hash key,select-name作为hash值,例如:
<select id="form_application_job_source" class="select required" name="form_application[job_source]">
<option value="0">Choose:</option>
<option value="1">On-Campus Recruiting - CSO</option>
<option value="2">CSO Staff Referral</option>
<option value="3">Faculty Contact</option>
<option value="4">Career Day</option>
<option value="5">CSO Summer Job Listing</option>
<option value="6">Alumni Contact</option>
<option selected="selected" value="7">Personal Contact</option>
<option value="8">Other</option>
</select>
Run Code Online (Sandbox Code Playgroud)
现在,如果您从下拉列表中选择"校园招聘 - CSO",则存储的值为:1
要在视图中将其显示为"On-Campus Recruiting - CSO",您必须在模型本身中创建一个小返回函数:
def return_paper_type
HASH_NAME[id]
end
Run Code Online (Sandbox Code Playgroud)
在视图中,它将是这样的: <%= @instancevariable.return_paper_type %>
| 归档时间: |
|
| 查看次数: |
9667 次 |
| 最近记录: |