Ruby on Rails:使用submit_tag放置类

时间:2013-04-03 22:10:41

标签: ruby-on-rails

我想知道为什么在放置nil

时我们必须添加:class => "class_name"
<%= submit_tag nil, :class => "class_name" %>

但为此:

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

我不需要添加nil

由于

5 个答案:

答案 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_tagsubmit只是不同形式的辅助方法,它们采用不同的参数。

答案 4 :(得分:0)

_tag系列方法通常需要一个名称参数(否则它们是相当无用的标记,因此它始终是第一个参数而不是哈希的一部分。因为提交助手被称为表单的一部分,Rails可以假设字段的name属性,然后可以使选项散列第一个参数。