Module: FormSelect::Model::ClassMethods
- Defined in:
- lib/form_select/model.rb
Instance Method Summary collapse
-
#form_select(method, field: nil, scope: nil) ⇒ Object
Use for define helper methods for Rails form.select tag.
Instance Method Details
#form_select(method, field: nil, scope: nil) ⇒ Object
Use for define helper methods for Rails form.select tag
for example:
class User < ApplicationRecord
form_select :name, scope: -> { order("name asc") }
form_select :name_value, field: [:name], scope: -> { order("name asc") }
form_select :email, field: [:name, :email], scope: -> { where(status: :active).order("id desc") }
end
<div class="field">
<%= form.label :user_id %>
<%= form.select :user_id, User.name_options %>
</div>
<div class="field">
<%= form.label :email %>
<%= form.select :email, User.email_options %>
</div>
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/form_select/model.rb', line 30 def form_select(method, field: nil, scope: nil) method_name = "#{method}_options" if field.blank? text_method ||= method value_method ||= primary_key else field = [field] unless field.is_a?(Array) text_method = field.first value_method = field.last end scope ||= -> { all } define_singleton_method(method_name) do scope.call.collect { |record| [record.send(text_method), record.send(value_method)] } end end |