У меня есть несколько из них, где единственное, что отличается, это если это text_field или password_field и т. Д. И т. Д. И т. Д.
Я хотел бы передать это как параметр для рендера, например: as =>: password_field, например.
И я не хочу сравнивать регистр, передаваемое в поле: как значение поля. Возможно ли это?
.text{:class => form.object.errors[field].any? ? "error" : nil}
= form.label field
-if defined? value
= form.text_field field, :value => value
-else
= form.password_field field
-if defined? hint
%p#hint= hint
= render 'shared/error_messages', :object => form.object, :field
.text{:class => form.object.errors[field].any? ? "error" : nil}
= form.label field
-if defined? value
= form.text_area field, :value => value
-else
= form.text_area field
-if defined? hint
%p#hint= hint
= render 'shared/error_messages', :object => form.object, :field => field
Ответ приведен ниже, с некоторыми исправлениями:
-# expects form, field_name, field_type, value and hint variables to be passed
.text{:class => form.object.errors[field_name].any? ? "error" : nil}
= form.label field_name
- if defined?(value)
= form.send(field_type, field_name, :value => value)
- else
/= form.send(:field_type, field_name)
= form.send(field_type, field_name)
-if defined? hint
%p#hint= hint
= render 'shared/error_messages', :object => form.object, :field => field_name
Использование:
= render 'shared/form_field', :form => f, :field_name => :email, :field_type => :text_field