在Rails中,我有一个像这样的Slim代码块:
= form_for :paste do |f| = f.text_field :name, placeholder: 'Title = f.button :priority, type: :submit, value: 0 do | Priority 0 = f.button :priority, type: :submit, value: 1 | Priority 1
查看HTML,我发现text_field
按预期有name="paste[name]"
。
但是,按钮元素没有,只是name="button"
。
如何让rails为元素指定正确的名称?
答案 0 :(得分:0)
button
documentation类似意味着你总是得到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。