Rails simple_form,在输入之前移动提示

时间:2014-02-03 22:20:48

标签: ruby-on-rails simple-form

是否有移动提示组件使其出现在输入之前?

当前显示的组件按以下顺序显示:标签,输入,提示,错误。我已经尝试添加:components选项,但这不起作用。

这是我的代码:

<%= f.input :content, 
            :components => [:label, :hint, :input], 
            :as => :text, 
            hint: 'Please 1) include your exact copy here, 2) upload your copy document in the next step, or 3) describe any content services to include in our estimate.', 
            required: true, 
            :label => "Copy" %>

3 个答案:

答案 0 :(得分:7)

您可以在config/initializers/simple_form.rb中修改输入部分默认包装,来自:

b.use :label_input
b.use :hint,  wrap_with: { tag: :span, class: :hint }
b.use :error, wrap_with: { tag: :span, class: :error }

为:

b.use :label
b.use :hint,  wrap_with: { tag: :span, class: :hint }
b.use :error, wrap_with: { tag: :span, class: :error }
b.use :input

本节从默认生成的simple_form.rb

的第42行开始

这会使单个复选框在出现错误时看起来有些奇怪,因此您还需要创建一个与原始配置重复的包装器版本,并将其设置为仅用于{{1} } 输入类型。例如:

boolean

答案 1 :(得分:5)

我认为您可以省略input_field中的提示并单独使用hint帮助程序。请参阅simple_form docs的摘录:

  

Simple Form还允许您使用label,hint,input_field,error和   full_error助手(请查看每种方法的rdocs   更多信息):

<%= simple_form_for @user do |f| %>
  <%= f.label :username %>
  <%= f.input_field :username %>
  <%= f.hint 'No special characters, please!' %>
  <%= f.error :username, id: 'user_name_error' %>
  <%= f.full_error :token %>
  <%= f.submit 'Save' %>
<% end %>

答案 2 :(得分:0)

您只需更改初始值设定项config/initializers/simple_form.rb的“输入”部分中的扩展名的顺序即可。

自:

## Inputs
b.use :label_input
b.use :hint,  wrap_with: { tag: :span, class: :hint }
b.use :error, wrap_with: { tag: :span, class: :error }

要:

## Inputs
b.use :hint,  wrap_with: { tag: :span, class: :hint }
b.use :label_input
b.use :error, wrap_with: { tag: :span, class: :error }

我不知道这是否是一项新功能。使用simple_form 3.5.0。

进行测试