【发布时间】:2013-03-14 04:25:53
【问题描述】:
我正在尝试在我的应用中为货币进行自定义输入。我有那些引导包装器等(我认为它带有 simple_form 或引导 gem ......),所以,我可以做类似的事情:
<%= f.input :cost, wrapper => :append do %>
<%= content_tag :span, "$", class: "add-on" %>
<%= f.number_field :cost %>
<% end %>
而且它按预期工作。问题是:我在很多地方都需要同样的东西,我不想到处复制/粘贴。
所以,我决定创建一个自定义输入。
到目前为止,我得到了以下代码:
class CurrencyInput < SimpleForm::Inputs::Base
def input
input_html_classes.unshift("string currency")
input_html_options[:type] ||= input_type if html5?
@builder.input attribute_name, :wrapper => :append do |b|
# content_tag(:span, "$", class: "add-on")
b.text_field(attribute_name, input_html_options)
end
end
end
但是我遇到了一些错误。看起来b 没有按预期出现,所以它只是不起作用。
真的可以做到吗?我找不到任何示例,也无法自己完成。
提前致谢。
【问题讨论】:
-
我认为这应该可行:gist.github.com/rafaelfranca/5158873
-
它有效!但我真的很想在我的自定义输入中做这个包装器的事情,所以当我使用货币输入时我不必传递包装器选项。是否可以?非常感谢。
-
您可以使用 wrapper_mappings 选项。见github.com/plataformatec/simple_form/blob/master/lib/generators/…