1

在 Rails 中,我有一个 Slim 代码块,如下所示:

= form_for : 粘贴 |f|
  = f.text_field :name, placeholder: '标题
  = f.button :priority, type: :submit, value: 0 do
    | 优先级 0
  = f.button:优先级,类型::提交,值:1
    | 优先级 1

看着 HTML,我看到了text_field正如name="paste[name]"预期的那样。

但是,按钮元素没有,它只是name="button".

如何让 rails 为元素分配正确的名称?

4

1 回答 1

0

button文档有点暗示你总是name="button"得到. 但在 Rails 中,确定它会做什么的唯一方法是阅读源代码。如果我们看一下,button我们会发现它只是一个薄包装button_tag

def button(value = nil, options = {}, &block)
  value, options = nil, value if value.is_a?(Hash)
  value ||= submit_default_value
  @template.button_tag(value, options, &block)
end

如果我们看一下button_tag,我们会看到这些name="button"废话是从哪里来的:

options.reverse_merge! 'name' => 'button', 'type' => 'submit'

content_tag :button, content_or_options || 'Button', options, &block

我认为name如果你不想,你必须在 HTML 选项中手动指定属性name="button"。或者你可以扔掉帮助器(因为它们并没有完全提供帮助)并自己构建按钮content_tag甚至是原始 HTML。

于 2013-07-04T03:15:21.387 回答