我想知道为什么我们必须nil
在放置时添加:class => "class_name"
<%= submit_tag nil, :class => "class_name" %>
但为此:
<%= f.submit class: "class-Name" %>
我不需要添加nil
谢谢
我想知道为什么我们必须nil
在放置时添加:class => "class_name"
<%= submit_tag nil, :class => "class_name" %>
但为此:
<%= f.submit class: "class-Name" %>
我不需要添加nil
谢谢
<%= submit_tag("Update", :id=>"button", :class=>"Test", :name=>"submit") %>
第一个参数是必需的,它是值,您想要指定的任何参数都可以在哈希中完成,例如:key=>“value”。
看看submit_tag 方法的实现方式可以清楚地回答您的问题。
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
默认情况下“保存更改”,第二个是选项哈希。如果您不通过nil
,那么它将假定这是您想要的输入值。
因为它们是两种不同的方法...
“提交”方法不带标题,因为它可以从调用该方法的表单中推断出一个标题,以及用于构建表单的对象。
不会在表单对象上调用“submit_tag”方法。它用于更自定义的表单构建(例如,与您的 activerecord 模型更分离),因此代码无法推断标题,并且必须获取一个值作为第一个参数。所有“formelement_tag”方法(例如,在此处记录)都是这样的,并且可以根据您的数据模型进行较少的推断。
显而易见的答案是,submit_tag
并且submit
只是采用不同参数的不同表单辅助方法。
_tag 系列方法通常需要一个 name 参数(否则它们将是相当无用的标签,因此它始终是第一个参数而不是哈希的一部分。因为提交帮助程序是作为表单的一部分调用的,Rails 可以假定该字段的name 属性,然后可以使选项散列第一个参数。