J'ai plusieurs de ceci, où la seule chose qui diffère est si c'est un text_field ou un password_field etc etc Je voudrais passer cela comme un paramètre au rendu, comme: as =>: password_field par exemple. Et je ne veux pas faire une comparaison de cas, la valeur passée dans le: tel est la valeur du champ. Est-ce possible ?SEC-moi. Rails code:
.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
réponse est celui ci-dessous, avec quelques corrections:
-# 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
Utilisation: = render 'shared/form_field', :form => f, :field_name => :email, :field_type => :text_field
Oui, monsieur, il suffit de trouver la réponse – daniel
Il semble que form.send (: field_type, field_name) est le même que form.send (: field_type, field_name,: value => value) dans les deux cas, il imprime la valeur si la valeur n'est pas nulle, pourquoi? – daniel