9

我想知道为什么我们必须nil在放置时添加:class => "class_name"

<%= submit_tag nil, :class => "class_name" %>

但为此:

<%= f.submit class: "class-Name" %>

我不需要添加nil

谢谢

4

5 回答 5

13
     <%= submit_tag("Update", :id=>"button", :class=>"Test", :name=>"submit") %>

第一个参数是必需的,它是值,您想要指定的任何参数都可以在哈希中完成,例如:key=>“value”。

于 2014-05-13T05:13:15.053 回答
9

看看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,那么它将假定这是您想要的输入值。

于 2013-04-03T22:14:39.870 回答
1

因为它们是两种不同的方法...

“提交”方法不带标题,因为它可以从调用该方法的表单中推断出一个标题,以及用于构建表单的对象。

不会在表单对象上调用“submit_tag”方法。它用于更自定义的表单构建(例如,与您的 activerecord 模型更分离),因此代码无法推断标题,并且必须获取一个值作为第一个参数。所有“formelement_tag”方法(例如,在此处记录)都是这样的,并且可以根据您的数据模型进行较少的推断。

于 2013-04-03T22:14:30.783 回答
0

显而易见的答案是,submit_tag并且submit只是采用不同参数的不同表单辅助方法。

于 2013-04-03T22:14:00.343 回答
0

_tag 系列方法通常需要一个 name 参数(否则它们将是相当无用的标签,因此它始终是第一个参数而不是哈希的一部分。因为提交帮助程序是作为表单的一部分调用的,Rails 可以假定该字段的name 属性,然后可以使选项散列第一个参数。

于 2013-04-03T22:16:14.053 回答