【问题标题】:Rails: Embed child in submit_tagRails:在 submit_tag 中嵌入孩子
【发布时间】:2016-12-19 19:20:50
【问题描述】:

我有这个表格:

= form_tag(path, name: "name") do |f|
   = hidden_field_tag "abc", content
   = submit_tag "" do
       %i.icon.ion-android-sync

如您所见,我正在尝试在表单提交标签中放置一个 Ionicon。
我尝试了很多方法,但都没有奏效。
在给定的示例中,我得到了一个大约宽度为 3 像素的空按钮。

是否可以在 submit_tag 中嵌入孩子?如果,你会怎么做?

非常感谢每个答案!

【问题讨论】:

    标签: css ruby-on-rails ruby forms ruby-on-rails-5


    【解决方案1】:

    简短的回答是“不”。但是,您可以创建一个“提交”类型的按钮,它会执行相同的操作并允许您将内容放入其中:

       %button{type: "submit"}
         %i.icon.ion-android-sync
    

    【讨论】:

      【解决方案2】:

      不,Rails submit 助手不会让你这样做。

      我在我的应用程序中使用了自定义提交助手:

      # Render a form submit button
      # === Params
      # +value+:: Value of the input/commit button, used for route constraints
      # +text+:: Text for the button
      # +:html_options+:: 
      def submit(value=nil, text=nil, html_options={})
        text ||= 'Submit'
        html_options[:name] ||= 'commit'
        html_options[:type] = 'submit'
        html_options[:data] ||= {}
        html_options[:data][:disable_with] ||= 'Please wait'
        html_options[:autocomplete] = "off" # https://github.com/rails/jquery-ujs/issues/357
        content_tag(:div, class: 'form-submit-wrapper') do
          button_tag(html_options){ block_given? ? yield : text }
        end
      end
      

      你可以在一个块中传递你想要的任何 HTML(对不起,这是 ERB,我对 HAML 不是很熟悉)

      <%= submit do %>    
        <i class="icon ion-android-sync"></i>
      <% end %>
      

      前两个参数只有在您的表单有多个提交按钮时才有用

      <%= submit('preview_action', 'Preview result') do %>    
        <i class="icon ion-android-sync"></i>
      <% end %>
      
      
      <%= submit('really_do_action', 'Do it for real') do %>    
        <i class="icon ion-android-sync"></i>
      <% end %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-16
        • 1970-01-01
        • 2012-12-13
        • 2017-02-21
        • 1970-01-01
        • 2012-07-31
        • 2021-10-26
        • 2015-01-29
        相关资源
        最近更新 更多