【问题标题】:Rails f.submit: how to add html attribute?Rails f.submit:如何添加 html 属性?
【发布时间】:2013-05-24 21:54:24
【问题描述】:

我在向 Rails 表单提交添加特定的 html 属性时遇到问题。

= form_for :model do |f|
  ...
  = f.submit 'Submit', tabindex: '3'

tabindex 属性未显示在表单中。我还尝试了html 哈希,但无济于事。

它只是产生这个html 标记:

<button type="submit" value="Submit">Submit</button>

编辑:我能想到的唯一替代方法是使用 jQuery。

$('button[type=submit]').attr('tabindex', '3');

但这似乎有点矫枉过正。看来Haml应该有办法。

【问题讨论】:

  • 这里发生了其他事情......应该可以。当您也向选项添加一个类时会发生什么? f.submit 'Submit', class: 'some-class', tabindex: '3'
  • 这应该是一个input 元素,而不是button 元素。你看对眼了吗?
  • 我正在查看正确的视图,但事实证明我们正在使用自定义表单构建器覆盖它。如果您对此效果添加一些答案,我会将其标记为正确。

标签: ruby-on-rails forms haml


【解决方案1】:

f.submit 'Submit', tabindex: '3' 的结果应该是:

<input type='submit' value='Submit' tabindex='3'></input>

但是,您似乎得到了一个 button 元素,而 tabindex 根本没有出现 - 所以这里肯定发生了其他事情。

如果您有一个自定义表单构建器并覆盖submit 方法,这肯定是结果。如果您需要该自定义表单构建器并且仍然希望您的提交元素是一个按钮,您需要确保您通过提交方法允许选项散列。不确定您当前的方法是什么样的,但您可以将其更新为如下内容:

def submit(value, options={})
  options.reverse_merge!(
    type: 'submit',
    value: value
  )

  button_tag(value, options)
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-26
    • 2014-01-15
    • 2011-07-16
    • 2011-04-21
    • 2017-03-18
    • 2011-09-25
    • 2019-05-21
    相关资源
    最近更新 更多