这个 class 添加到 rails form_for 有什么问题?

Whats wrong with this class addition to this rails form_for?

我正在尝试在此 rails form_for 中设置表单元素的样式,但不断 运行 出现语法错误,我尝试的任何操作似乎都不起作用,您能看出问题所在吗?

<%= form_for(@todo_list) do |f| %>
  <div class="form-group">
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </div>
  <div class="form-group">
    <%= f.label :description %><br>
    <%= f.text_area :description %>
  </div>
  <div>
    <%= f.submit, html: {class: "btn btn-default btn-xs"} %>
  </div>
<% end %>

导致此错误:_form.html.erb:23: syntax error, unexpected tLABEL, expecting '=' ...buffer.append=( f.submit, html: {class: "btn btn-default btn... ...

class=class:html=> 等各种变体似乎也会出错。

<%= f.submit, class: "btn btn-default btn-xs" %>

导致此错误:

SyntaxError in TodoListsController#edit ...... _form.html.erb:23: syntax error,unexpected tLABEL, expecting '=' ...uffer.append=( f.submit, class: "btn btn-default btn-xs" );@... ... ^

将'form-horizontal'传递给form_for仍然产生错误;

<%= form_for(@todo_list, html => {:class => "form-horizontal"})  do |f| %>
....
....
<%= f.submit, class: "btn btn-default btn-xs" %>

SyntaxError in TodoListsController#edit ... _form.html.erb:23: syntax error, unexpected tLABEL, expecting '=' ...uffer.append=( f.submit, class: "btn btn-default btn-xs" );@... ... ^

请注意,如果我明确声明提交操作的标签,例如;

<%= f.submit 'Save', class: "btn btn-default btn-xs" %>

然后 class 添加成功并且我的 bootstrap 样式生效。然而,这既没有找到主要问题也没有解决它,因为我不能使用 rails' form_for 提交操作的动态命名。

类 我申请 div 似乎工作正常,bootstrap 加载正常。谁能帮忙?谢谢

这样使用。

<%= form_for(@todo_list, :html => {:class => "form-horizontal"}) do |f| %>

<%= f.submit class: "btn btn-default btn-xs"%>

正如 Umar 所述,您的 f.submit classreference is incorrect:

<%= f.submit, class: "btn btn-default btn-xs" %>

您还将受益于在表单中使用循环:

#form
<% options = [[:title, "text_field"],[:description, "text_area"]] %>
<%= form_for @todo_list do |f| %>
   <% options.each do |option| %>
      <%= content_tag :div, class: "form-group" %>
          <%= f.label option[0] %>
          <%= f.send(option[1], option[0]) %>
      <% end %>
   <% end %>
   <%= f.submit %>
<% end %>

您忘记为提交按钮添加标签

<%= f.submit 'Ok', class: "btn btn-default btn-xs" %>

编辑 另一种方法是重写按钮的默认值:

<%= f.submit class: "btn btn-default btn-xs", value: 'Ok!' %>

而且,正如我所想,这就是您要查找的内容:

<%= f.submit class: "btn btn-default btn-xs" %>

f.submit

后没有逗号

这是一个拼写错误:您有一个额外的逗号:

f.submit, class: "btn btn-default btn-xs"
#       ^ extra comma

您应该使用以下内容:

f.submit nil, class: 'btn btn-default btn-xs'
#       ^ no comma