Как отобразить только выбранную информацию в моем collection_select в Rails? - PullRequest
1 голос
/ 29 марта 2019

У меня есть следующий код:

<div class="field">
  <%= f.label :emp_role_id, "Employee Role" %>
  <%= f.collection_select :emp_role_id, EmpRole.all, :id, :emp_rolename %>
</div>

В моей EmpRole есть владелец, менеджер, начальник смены и сотрудник по продажам.Я создаю форму самостоятельной регистрации, которая позволяет сотрудникам самостоятельно регистрироваться в приложении.

В настоящее время любой, кто регистрируется с помощью этого метода, может быть владельцем и менеджером, однако я хотел бы, чтобы любой, кто регистрируется, имел право только на роль руководителя смены и менеджера по продажам.Есть ли в любом случае, я могу отфильтровать другие 2 варианта и показать только «Sales Employee» и «Shift Leader», используя collection_select?

Ответы [ 2 ]

1 голос
/ 30 марта 2019

Два РЕШЕНИЯ ....

ПЕРВОЕ РЕШЕНИЕ

##############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]} %>

Я бы порекомендовал первый, так как он очень динамичный и может быть изменен по требованию.

Надеюсь, это поможет

1 голос
/ 29 марта 2019

Вы можете попробовать это

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...