Form_form против Simple_form (Коллекции: value_method, label_method) - PullRequest
0 голосов
/ 14 июня 2019

В simple_form вы можете использовать label_method и value_method, как показано ниже.

f.association :company, collection: Company.all.order(:name), label_method: :name, value_method: :value

1) Имеет ли form_for одинаковые методы?

2) Каковы значения по умолчанию для: label_method и: value_method в SimpleForm?

Решение (устанавливается в инициализаторе):

config.collection_label_methods = [ :to_label, :name, :title, :to_s ]
config.collection_value_methods = [ :id, :to_s ]

1 Ответ

0 голосов
/ 14 июня 2019

Да, по умолчанию FormBuilder обладает такими же возможностями:

<%= form_for @yourmodel do |f| %>
  <%= f.collection_select :company_id, Company.all.order(:name), :id, :name %>
  <%= f.submit %>
<% end %>

Согласно collection_select helper документации

collection_select (метод, коллекция, value_method, text_method, options = {}, html_options = {}) public

# File actionview/lib/action_view/helpers/form_options_helper.rb, line 834
def collection_select(method, collection, value_method, text_method, options = {}, html_options = {})
    @template.collection_select(@object_name, method, collection, value_method, text_method, objectify_options(options), @default_html_options.merge(html_options))
end
...