Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:简单表单中提交按钮的自定义包装器?_Ruby On Rails_Wrapper_Simple Form - Fatal编程技术网

Ruby on rails Rails:简单表单中提交按钮的自定义包装器?

Ruby on rails Rails:简单表单中提交按钮的自定义包装器?,ruby-on-rails,wrapper,simple-form,Ruby On Rails,Wrapper,Simple Form,我正在使用简单的形式宝石与引导3。 我想要一个提交按钮的包装 <%= f.input :first_name %> <%= f.input :last_name %> ... <%= content_tag(:div, class: 'form-group') do %> <%= content_tag(:div, class: 'col-sm-offset-2 col-sm-10') do %> <%= f.button :su

我正在使用简单的形式宝石与引导3。 我想要一个提交按钮的包装

<%= f.input :first_name %>
<%= f.input :last_name %>
...
<%= content_tag(:div, class: 'form-group') do %>
  <%= content_tag(:div, class: 'col-sm-offset-2 col-sm-10') do %>
    <%= f.button :submit, value: 'Save', class: "btn-primary" %>
  <% end %>
<% end %>
现在它将HTML显示为

<form id="new_order" ...>
    ...

   <input class="btn btn-primary" type="submit" value="Save" name="commit">
</form>
这是我的包装纸:

  config.wrappers :horizontal_submit_button, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
     b.use :html5
     b.use :placeholder

     b.wrapper tag: 'div', class: 'col-sm-offset-2 col-sm-10' do |ba|
       ba.use :input
       # some coe goes here, maybe
     end
  end

在提交按钮的包装映射中使用哪种输入类型?如何编写包装器?

我今天也希望做同样的事情。奇怪的是,我找不到通过包装器API实现的方法,但默认情况下,Simple Form喜欢将其输入包装在
div.Form-inputs
中,并将其提交按钮包装在
div.Form-actions
中。因此,我将
div.form-actions
设置为
@extend.col-md-offset-4
,以获得我想要的结果


希望这有帮助

显然,不可能使用简单的表单为按钮提供包装。我想做同样的事情,我找到的解决办法是替换

config.button_class = 'btn'


config/initializers/simple_form.rb
文件中。问题是,它将是所有表单按钮的默认设置。

简单表单
按钮
是rails的基本包装
submit
助手。它只需添加在简单表单初始值设定项中定义的
按钮类
,并将其发送到
提交
,下面是它现在的样子:


您不必使用
content\u标记
helpers,任何
html\u-safe
字符串都可以使用。

@Alex所述,如果您想要所有表单中的包装器,您可以添加自定义输入

对于只需要以几种形式添加类的自定义解决方案

您可以使用
content\u标签
包装提交按钮

<%= f.input :first_name %>
<%= f.input :last_name %>
...
<%= content_tag(:div, class: 'form-group') do %>
  <%= content_tag(:div, class: 'col-sm-offset-2 col-sm-10') do %>
    <%= f.button :submit, value: 'Save', class: "btn-primary" %>
  <% end %>
<% end %>

...
这将为提交生成以下内容(不是故意为此处的输入添加生成的HTML)


1年,15票赞成,但仍然没有好的答案。这太可悲了,
简单的形式
:(
config.button_class = 'myclass1 myclass2'
def button(type, *args, &block)
  options = args.extract_options!.dup
  options[:class] = [SimpleForm.button_class, options[:class]].compact
  args << options
  if respond_to?(:"#{type}_button")
    send(:"#{type}_button", *args, &block)
  else
    send(type, *args, &block)
  end
end
module SimpleForm
  class FormBuilder
    def submit_button(*args, &block)
      ActionController::Base.helpers.content_tag(:div, class: 'form-actions') do
        submit(*args, &block)
      end
    end
  end
end
<%= f.input :first_name %>
<%= f.input :last_name %>
...
<%= content_tag(:div, class: 'form-group') do %>
  <%= content_tag(:div, class: 'col-sm-offset-2 col-sm-10') do %>
    <%= f.button :submit, value: 'Save', class: "btn-primary" %>
  <% end %>
<% end %>
<div class="form-group">
  <div class="col-sm-offset-2 col-sm-10">
    <input type="submit" name="commit" value="Save" class="btn btn-primary" data-disable-with="Update User">
  </div>
</div>