我想知道为什么在放置nil
:class => "class_name"
<%= submit_tag nil, :class => "class_name" %>
但为此:
<%= f.submit class: "class-Name" %>
我不需要添加nil
由于
答案 0 :(得分:11)
<%= submit_tag("Update", :id=>"button", :class=>"Test", :name=>"submit") %>
第一个参数是必需的,它是值,它们是你想要指定的任何参数,可以用哈希来完成,例如:key =&gt;“value”。
答案 1 :(得分:8)
way that submit_tag method was implemented的外观清楚地回答了您的问题。
def submit_tag(value = "Save changes", options = {})
options = options.stringify_keys
if disable_with = options.delete("disable_with")
options["data-disable-with"] = disable_with
end
if confirm = options.delete("confirm")
options["data-confirm"] = confirm
end
tag :input, { "type" => "submit", "name" => "commit", "value" => value }.update(options)
end
它有两个参数,第一个是value
,默认情况下是“保存更改”,第二个是Hash of options。如果您没有通过nil
,那么它将假定这是您想要输入的值。
答案 2 :(得分:1)
因为它们是两种不同的方法......
“submit”方法不带标题,因为它可以从调用方法的表单中推断出一个,以及用于构建表单的对象。
不会在表单对象上调用“submit_tag”方法。它用于更自定义的表单构建(例如,与您的activerecord模型更加分离),因此代码无法推断标题,必须将值作为第一个参数。所有“formelement_tag”方法(例如,记录为here)都是这样的,可以根据您的数据模型推断出更少。
答案 3 :(得分:0)
明显的答案是submit_tag
和submit
只是不同形式的辅助方法,它们采用不同的参数。
答案 4 :(得分:0)
_tag系列方法通常需要一个名称参数(否则它们是相当无用的标记,因此它始终是第一个参数而不是哈希的一部分。因为提交助手被称为表单的一部分,Rails可以假设字段的name属性,然后可以使选项散列第一个参数。