我在下面有以下代码:
Z0700 Z or ±hhmm
Z07:00 Z or ±hh:mm
Z07 Z or ±hh
在我的EmpRole中,有所有者,经理,班主任和销售员工。我正在创建一个自我注册表格,该表格允许员工注册自己以使用该应用程序。
当前,使用此方法签约的任何人都可以是所有者和经理,但是,我希望签约的任何人仅具有Shift Leader和Sales Employee角色的特权。无论如何,我可以使用collection_select过滤掉其他2个选项,只显示“ Sales Employee”和“ Shift Leader”吗?
答案 0 :(得分:1)
<div class="field">
<%= f.label :emp_role_id, "Employee Role" %>
<%= f.collection_select :emp_role_id, EmpRole.where("emp_rolename IN (?)", ["Sales Employee", "Shift Leader"]), :id, :emp_rolename %>
</div>
答案 1 :(得分:1)
两个解决方案......
第一个解决方案
##############in emp model..emp.rb####################
ADMIN_ROLES = %w[SUPERADMIN ADMIN BIGADMIN].freeze
SIMPLE_ROLES = %w[SHIFTLEADER SALESLEADER BLAH BLAH].freeze
scope :get_simple_roles_only, -> { where(:name => SIMPLE_ROLES) }
##############in the view file ###################
<%= f.collection_select :emp_role_id, EmpRole.get_simple_roles_only.collect {|x| [x.name, x.id]} || f.rolename) %>
第二解决方案>使用delete_if
<%= f.collection_select :emp_role_id, EmpRole.all.delete_if {|a| a.emp_rolename == ['ROLENAME1', 'ROLENAME1'].map{|s| [s.id, s.name]} %>
我会推荐第一个,因为它非常动态,可以根据需要进行更改。
希望有帮助