Próbuję wprowadzić niestandardowe dane wejściowe dla waluty w mojej aplikacji. Miałem te bootstrap owijarki i etc (myślę, że chodzi o simple_form lub bootstrap gem ...), tak, mogę zrobić coś takiego:Proste wejście niestandardowe z niestandardowym opakowaniem
<%= f.input :cost, wrapper => :append do %>
<%= content_tag :span, "$", class: "add-on" %>
<%= f.number_field :cost %>
<% end %>
I to działa tak jak oczekiwano. Chodzi o to, że potrzebuję tego samego w wielu miejscach i nie chcę go kopiować/wklejać.
Postanowiłem więc utworzyć niestandardowe wejście.
Do tej pory mam następujący kod:
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
Ale mam pewne błędy. Wygląda na to, że b
nie jest zgodny z oczekiwaniami, więc po prostu nie działa.
Czy to naprawdę możliwe? Nie mogłem znaleźć żadnego przykładu i nie mogę sprawić, by działał sam.
Z góry dziękuję.
myślę, że to powinno działać: https://gist.github.com/rafaelfranca/5158873 – rafaelfranca
to działa! Ale naprawdę chcę zrobić to opakowanie w moim niestandardowym wprowadzeniu, więc nie muszę przekazywać opcji opakowania, gdy używam wejścia waluty. Czy to możliwe? Wielkie dzięki. – caarlos0
Możesz użyć opcji wrapper_mappings. Zobacz https://github.com/plataformatec/simple_form/blob/master/lib/generators/simple_form/templates/config/initializers/simple_form.rb#L123 – rafaelfranca