【问题标题】:Why does form_for class addition only work when i explicitly declare a submit label?为什么 form_for 类添加仅在我明确声明提交标签时才有效?
【发布时间】:2015-10-20 13:20:36
【问题描述】:

我正在尝试在此 rails form_for 中设置表单元素的样式,但不断遇到语法错误,我尝试的任何方法似乎都不起作用:

_form.html.erb:

<%= 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: 语法错误,意外 tLABEL,期待 '=' ...buffer.append=( f.submit, html: {class: "btn btn-default btn... ...

class=class:html=&gt;、传入html =&gt; {:class =&gt; "form-horizontal"} 等的各种变体似乎都给出了相同的语法错误。

唯一的例外是当我明确地将标签应用于提交操作时,例如;

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

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

我应用于 div 的类似乎工作正常,引导程序加载正常。任何人都可以帮忙吗?谢谢

【问题讨论】:

  • 问题是我在不应该出现的地方包含了一个逗号; &lt;%= f.submit class: "btn btn-primary btn-xs" %&gt; 不是 &lt;%= f.submit, class: "btn btn-primary btn-xs" %&gt;

标签: ruby-on-rails form-for


【解决方案1】:

您收到错误是因为submit 是一个函数,而第一个参数是标签。您不能像在代码示例中那样编写 f.submit,

如果您想添加第二个参数,您至少需要提供nil 作为标签。正确的做法是:

<%= f.submit nil, html: {class: "btn btn-default btn-xs"} %>

来自APIDock

提交(value=nil, options={}) 公开

【讨论】:

  • 因为默认标签是nil,所以看定义。当你自己写f.submit时,和写f.submit nil, {}是一样的
  • 谢谢韦斯,感激不尽。
  • 2018 年更新 Rails 5 和 ruby​​ 2.4。 为我工作,上面接受的答案没有。
猜你喜欢
  • 1970-01-01
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-16
相关资源
最近更新 更多