Tôi đang cố gắng tạo một đầu vào tùy chỉnh cho đơn vị tiền tệ trong ứng dụng của mình. Tôi đã có những giấy gói bootstrap và vv (tôi nghĩ nó đi kèm với simple_form hoặc với đá quý bootstrap ...), do đó, tôi có thể làm điều gì đó như:đầu vào tùy chỉnh simple_form với trình bao bọc tùy chỉnh
<%= f.input :cost, wrapper => :append do %>
<%= content_tag :span, "$", class: "add-on" %>
<%= f.number_field :cost %>
<% end %>
Và nó hoạt động giống như mong đợi. Vấn đề là: Tôi cần điều tương tự ở nhiều nơi, và tôi không muốn sao chép/dán nó xung quanh.
Vì vậy, tôi quyết định tạo đầu vào tùy chỉnh.
Cho đến bây giờ, tôi có đoạn mã sau:
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
Nhưng tôi có một số sai sót. Có vẻ như b
không đến như mong đợi, vì vậy, nó không hoạt động.
Thực sự có thể thực hiện việc này không? Tôi không thể tìm thấy bất kỳ ví dụ nào và không thể tự làm việc đó.
Xin cảm ơn trước.
Tôi nghĩ điều này sẽ hoạt động: https://gist.github.com/rafaelfranca/5158873 – rafaelfranca
nó hoạt động! Nhưng tôi thực sự muốn làm điều này wrapper trong đầu vào tùy chỉnh của tôi, vì vậy tôi không phải vượt qua các tùy chọn wrapper khi tôi sử dụng đầu vào tiền tệ. Có thể không? Cảm ơn rất nhiều. – caarlos0
Bạn có thể sử dụng tùy chọn wrapper_mappings. Xem https://github.com/plataformatec/simple_form/blob/master/lib/generators/simple_form/templates/config/initializers/simple_form.rb#L123 – rafaelfranca