【发布时间】:2010-11-10 11:18:31
【问题描述】:
我有几个这样的,唯一不同的是它是 text_field 还是 password_field 等等等等。 我想将此作为参数传递给渲染,例如 :as => :password_field 。 而且我不想进行大小写比较,在 :as 中传递的值是该字段的值。这可能吗?
.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
【问题讨论】:
标签: ruby-on-rails dry