2012-05-06 14 views
23

Pracuję nad książką Agile Web Development with Rails, ale używam Twitter Bootstrap zamiast niestandardowej stylizacji z książki. Mam problem z dodaniem ikony poprzez Gypsykę do metody button_to. Mój kod wygląda tak:Dodawanie ikony przycisku Bootstrap na klawiaturze do przycisku button_to w Railsach

<%= button_to <i class="icon-search icon-white">Add To Cart</i>, 
       line_items_path(product_id: product), 
       class: "btn btn-success" %> 

Próbowałem kilka odmian, ale nie mogę sprawić, by działało poprawnie.

+1

Czy wiesz, że działa któryś z Bootstrap CSS na Twitterze? Domyślam się, że jest to problem z ścieżką do pliku, być może glify nie znajduje się we właściwym folderze. Jeśli po prostu robisz czysty HTML, bez Ruby, czy poniższe okno pokazuje ikonę wyszukiwania ?: ' Dodaj do koszyka' –

Odpowiedz

8

Wygląda na to, że masz problem ze swoimi cytatami:

<%= button_to raw("<i class=\"icon-search icon-white\">Add To Cart</i>"), 
      line_items_path(product_id: product), 
      class: "btn btn-success" %> 

dołączyć etykietę przycisku w cudzysłowach, ucieczki podwójne cudzysłowy w tagu i, i wreszcie, zawinąć wszystko w raw() rozmowy aby zapewnić prawidłowe wyświetlanie HTML.

Alternatywnie można użyć html_safe:

<%= button_to "<i class=\"icon-search icon-white\">Add To Cart</i>".html_safe, 
      line_items_path(product_id: product), 
      class: "btn btn-success" %> 

dobry punkt z @jordanpg: nie można mieć HTML wartości jednego przycisku, więc jego rozwiązanie jest bardziej odpowiednie i powinien dostać zatwierdzony status. część html_safe pozostaje jednak ważna.

+0

AHH! To był problem. Myślałem, że to coś z tym związanego, ale robiłem to źle. Dzięki za paczkę Pierre. – maddiedog

+39

Żadne z tych rozwiązań nie działa. – Undistraction

+9

Te nie działają dla mnie na Railsach 3.2.8 – joelparkerhenderson

52

Nie jestem pewien, jak to działa, ale Railsy button_to generują element <input type='submit' />, który nie dopuszcza HTML w polu wartości.

Zobacz także: input type="submit" Vs button tag are they interchangeable?

Najlepszą alternatywą w tej sytuacji jest to, aby wymusić link_to do PUT (lub POST):

<%= link_to raw("<i class=\"icon-search icon-white\">Add To Cart</i>"), 
      line_items_path(product_id: product), 
      class: "btn btn-success", 
      method: :put %> 
+3

To ^^^ jest poprawną odpowiedzią. Nie zaakceptowano jednego PO. – flyingarmadillo

+3

Z wyjątkiem sytuacji, gdy mówimy o łączu/przycisku do usunięcia. Potrzebujemy przycisku, aby ZAPISZ, aby metoda HTML działała. http://stackoverflow.com/questions/4606860/rails-3-link-to-to-destroy-not-working –

+0

To powinna być zaakceptowana odpowiedź. – GMA

6

Korzystanie raw() lub #html_safe nadal nie działa dla mnie.

Używam metody pomocnika do tworzenia zawartości flagi button_to. Skończył przy użyciu następujących w moim metody pomocnika (ścieżka jest zdefiniowane wcześniej):

form_tag path, :method => :post do 
    button_tag do 
    content_tag :i, 'Flag as inappropriate', :class => 'icon-flag flag_content' 
    end 
end 
5

Kiedyś to jedno i to działa dobrze dla mnie:

<%= link_to(line_items_path(product_id: product), 
    method: :put, 
    class: 'btn btn-success') do %> 
    <%= content_tag('i', nil, class: 'icon-search icon-white') %> Add To Cart 
<% end %> 

Nadzieja to pomaga

+0

działająca odpowiedź, ale problem z plikiem opisany w komentarzach jest prawdopodobnie bardziej przyczyną – toxicate20

+0

Uwaga: ta odpowiedź działa tylko przy włączonej obsłudze JavaScript. Jeśli przeglądarka ma wyłączoną obsługę JavaScript, link zostanie wywołany za pomocą metody GET. – morgler

4

jestem za pomocą tego pomocnika:

module ApplicationHelper 
    def glyph(*names) 
    content_tag :i, nil, class: names.map{|name| "icon-#{name.to_s.gsub('_','-')}" } 
    end 
end 

przykład:

glyph(:share_alt) 
=> <i class="icon-share-alt"></i> 

i

glyph(:lock, :white) 
=> <i class="icon-lock icon-white"></i> 
21

Możesz dodać ikonę jako element dziecięcej:

<%= button_to button_path, method: :delete do %> 
    <span class="glyphicon glyphicon-search"></span> 
<% end %> 
+3

Przekazywanie bloku do 'button_to' działa tylko z szynami = = 4.x – morgents

+0

Dokładnie tego szukałem. Wielkie dzięki. – blivet

1

Korzystanie Rails 4 i Bootstrap 3, oto jak utworzyć przycisk Usuń korzystając link_to lub button_to.

Zauważ, że używam Haml zamiast Erb.

W widoku:

- @users.each do |user| 
    = link_to content_tag(:i, ' Delete', class: "glyphicon glyphicon-trash"), 
    users_path(user), 
    class: "btn btn-danger", 
    method: :delete, 
    data: { confirm: "Delete user #{user.username}?" } 

Można również wymienić content_tag część z

raw('<i class="glyphicon glyphicon-trash"> Delete</i>'), 
0

tę pracę dla mnie (iz wiadomości potwierdzenie)

<%= button_to "/home/delete?cardId="+card.id.to_s, data: { confirm:'Are you sure you want to delete?' } do %> 
    <i class="fa fa-times"></i> 
<% end%> 

to generować

<form class="button_to" method="post" action="/home/delete?cardId=15"> 
<button data-confirm="Are you sure you want to delete?" type="submit"> 
    <i class="fa fa-times"></i> 
</button> 
</form> 
Powiązane problemy