Есть ли способ с помощником формы rails создать тег кнопки для отправки

Я пытаюсь создать кнопки аля Wufoo (Повторное открытие элемента кнопки)

Я хотел бы написать следующий код, как показано ниже:

<%form_tag search_path, :method => :get, :class => 'search' do %>
  <%=text_field_tag :search, params[:search] -%>
  <%=button_tag 'search', :name => nil-%>
<%end%>

Чтобы сгенерировать следующий HTML (вместо тега input[type="submit"])

<button type="submit" class="positive">
    <img src="/images/icons/tick.png" alt=""/> 
    Save
</button>

Метод уже существует? Или я должен свернуть свой собственный помощник?


person Jonathan    schedule 12.02.2010    source источник


Ответы (3)


Для этого вы можете использовать content_tag. Это более простой способ делать то, что вы хотите. Но это длиннее, чем необработанный HTML.

<% content_tag :button :type => :submit, :class => :positive do %>
   <%= image_tag "icons/tick.png"%>
   Save
<% end %>

Что производит

<button type="submit" class="positive">
    <img src="/images/icons/tick.png" alt="Tick"/> 
    Save
</button>

Однако, используя это в качестве отправной точки, у вас не должно возникнуть проблем с развертыванием собственного надежного помощника или абстрагированием его до частичного.

person EmFi    schedule 12.02.2010
comment
Как помощник сделает это быстрее? - person TheExit; 02.11.2010
comment
@TheExit: помощник не сделает это быстрее. Я никогда не утверждал, что это произойдет, на самом деле тег содержимого будет медленнее, чем просто ввод необработанного html в виде строки. Но помощник поддается легкому повторному использованию, что делает его более быстрым с точки зрения времени, затрачиваемого на написание кода для будущего использования этого типа кнопки. - person EmFi; 02.11.2010
comment
Я сделал хелпер с именем button_tag, и он ведет себя точно так же, как и все другие хелперы формы rails, и поэтому он меня радует. - person jaydel; 13.04.2011
comment
чтобы получить обновление или создать текст, вы можете сделать t(helpers.submit.#{@your_model.persisted? ? 'update' : 'create' } - person Vigrond; 18.05.2014
comment
Это, вероятно, очень поздно, и всем все равно ... но вы забыли = перед content_tag :) - person Aswin Ramakrishnan; 12.11.2014
comment
Это, наверное, тоже очень поздно, и всем наплевать... но для меня после кнопки :нужен . - person qubit; 03.03.2015

Вы можете использовать помощник image_submit_tag для создания тега отправки изображения. , а не оборачивать все это в кнопку:

<%
image_submit_tag("login.png")
# => <input src="/images/login.png" type="image" />

image_submit_tag("purchase.png", :disabled => true)
# => <input disabled="disabled" src="/images/purchase.png" type="image" />

image_submit_tag("search.png", :class => 'search-button')
# => <input class="search-button" src="/images/search.png" type="image" />
%>

Это может быть не то, что вы ищете, если вам нужно, чтобы текст «Сохранить» отображался над <img>

person meagar    schedule 12.02.2010

Используйте The JQuery Cheats Gem https://github.com/plowdawg/jquery_cheats, и, по вашему мнению, это просто

<%= submitimage("/path/to/image.png","Alternate Text") %>

ПРИМЕЧАНИЕ. Альтернативный текст указывать необязательно.

person Travis Pessetto    schedule 17.08.2011