【问题标题】:Is there a way with rails form helper to produce a button tag for submitrails form helper有没有办法为提交生成一个按钮标签
【发布时间】:2011-01-16 07:38:00
【问题描述】:

我正在尝试创建按钮 ala Wufoo (Rediscovering the button element)

我想编写如下代码:

<%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>

方法是否已经存在?还是我应该滚动自己的助手?

【问题讨论】:

    标签: ruby-on-rails forms custom-tag


    【解决方案1】:

    您可以使用 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>
    

    但是,以此为起点,您应该可以轻松滚动自己的健壮帮助程序,或将其抽象为部分。

    【讨论】:

    • 帮助者如何使这更快?
    • @TheExit:助手不会让它更快。我从来没有声称它会,实际上内容标签会比将原始 html 作为字符串输入要慢。但是帮助器本身易于重用,这使得它在编写代码以供将来使用此类按钮时更快。
    • 我创建了一个名为“button_tag”的助手,它的行为与所有其他 Rails 表单助手方法完全相同,因此我很高兴。
    • 获取“更新”或“创建”文本,你可以这样做 t("helpers.submit.#{@your_model.persisted? ? 'update' : 'create' }"
    • 这可能已经很晚了,甚至没有人关心.. 但是你忘记了 content_tag 之前的“=”:)
    【解决方案2】:

    您可以使用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" />
    %>
    

    如果您需要在&lt;img&gt; 上方显示“保存”文本,这可能不是您要查找的内容

    【讨论】:

      【解决方案3】:

      使用 JQuery Cheats Gem https://github.com/plowdawg/jquery_cheats,在您看来它只是

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

      注意:替代文字是可选的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-09
        • 1970-01-01
        • 2011-11-12
        • 2013-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-12
        相关资源
        最近更新 更多