2012-07-22 21 views
27

Mam formularz na podobnym/odróżnieniu przycisk za pomocą AJAX:Szyny i bootstrap - Dodaj znaczniki HTML do tekstu złożyć przycisk

= form_for like, :html => { :method => :delete}, :remote => true do |f| 
= f.submit pluralize(@video.likes.count, 'like'), :class => "btn btn-warning btn-mini", "data-disable-with"=> "Just a moment..." 

Formularz działa perfekcyjnie.

Chciałbym dodać ikonę przed tekstem przycisku Wyślij. Kod haml dodawania ikon jest następujący (twitter bootstrap):

%i.icon-heart.icon-white 

Czy istnieje sposób, aby dodać html do przycisku? Próbowałem dodać go jako zwykły html, ale szyny renderowały go jako tekst.

UPDATE

mam udaje się ująć w przycisk w span class, który zawiera ikonę i odpowiednią stylizację. Teraz muszę usunąć wszystkie stylizacje na przycisku ...

%span.btn.btn-danger.btn-mini 
    %i.icon-heart.icon-white 
    = f.submit pluralize(@video.likes.count, 'like') 

Odpowiedz

92

Dzięki ismaelga znalazłem this SO question.

To rozwiązanie:

<%= button_tag(type: 'submit', class: "btn btn-primary") do %> 
<i class="icon-ok icon-white"></i> Save 
<% end %> 
+0

tak, bo powyższy nie działa – Ben

+1

Bardzo fajny .. Pracował jak urok! –

+7

Nawet jeśli to rozwiązanie działa, nie podoba mi się to, ponieważ nie widzę już zmiennej f :) Wygląda na to, że przesłanie formularza znikąd ... –

3

Spróbuj tego. Nie testowałem, ale myślę, że można coś takiego zrobić.

= f.submit :class => "btn btn-warning btn-mini", "data-disable-with"=> "Just a moment..." do 
    %i.icon-heart.icon-white 
    = pluralize(@video.likes.count, 'like') 
end 

Było to możliwe, jeśli używasz simple_form. Przepraszam.

Więc kolejna próba byłaby

= f.submit "#{pluralize(@video.likes.count, 'like')} <i class='icon-heart icon-white'/>".html_safe, :class => "btn btn-warning btn-mini", "data-disable-with"=> "Just a moment..." 
+0

Próbowałem zainstalować SimpleForm i używając pierwszej odpowiedzi, ale to nie działa. Twoja sekunda ani .. –

+0

Ah!Dzięki Twojej odpowiedzi znalazłem nowe słowa kluczowe do wyszukiwania w Google! [to pytanie SO] (http://stackoverflow.com/questions/10858582/html-code-inside-buttons-with-simple-form) było naprawdę pomocne! –

+0

Ja również odpowiedziałem na to pytanie :) Mam nadzieję, że znajdziesz rozwiązanie –

2

Justin D's odpowiedź pomogła mi również. Jeśli idziesz tu z Google i szukasz Slim realizacji, można to zrobić tak:

= button_tag(type: 'submit', class: 'btn btn-default') do 
    span.glyphicon.glyphicon-floppy-disk> 
    | Save 
end 

Slim użytkownicy uznają konieczność > „s.

ten pracował dla mnie z Rails 4.1.5, Ruby 2.1.2 i bootstrap-Sass 3.2 z dniem 24 września 2014 r

+0

To zaoszczędziło mi wiele godzin frustracji. +1! –

2

Innym rozwiązaniem mogłoby być button zamiast submit

zobaczyć Rails dokumentacja FormBuilder#button

= f.button :class => "btn btn-warning btn-mini" do 
    %i.icon-heart.icon-white 
    = pluralize(@video.likes.count, 'like') 
-2

Spróbuj poniższy kod. Działa

<%= f.submit :class => "btn btn-success btn-mini" %> 
+0

Byłoby wspaniale dodać pewne wyjaśnienie. –

+0

Twoja odpowiedź nie zawiera html w tagu submit, więc nie zawiera ikony. –

Powiązane problemy