Rails:在submit_tag中嵌入子项

时间:2016-12-19 19:20:51

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

我有这样的表格:

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

正如您所看到的,我正在尝试将Ionicon放入Form Submit标签中 我尝试了很多方法,但没有一种方法可行 在给定的例子中,我得到一个宽度约为3px的空按钮。

是否可以在submit_tag中嵌入子项?如果,您将如何这样做?

非常感谢每个答案!

2 个答案:

答案 0 :(得分:5)

简短的回答是" no"。但是,您可以创建一个类型为"提交"的按钮。我会做同样的事情并允许你把内容放在其中:

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

答案 1 :(得分:0)

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