输入参数的Ruby语法如何工作?

时间:2016-11-26 07:48:14

标签: ruby-on-rails

<%= f.label :password %>
<%= f.password_field :password, class: 'form-control' %>

password_field的方法签名是:

      def password_field(object_name, method, options = {})
  1. 在“... f.password_field:password ...”行中,是否有两个参数传递给password_field?所以它与“f.password_field(:password,class:'form-control')相同?
  2. 根据pw_field的方法签名,“:password”应该是一个对象。但是,它是一个符号,据我所知,它更像是一个字符串而不是一个指针。如何将此作为对象输入有意义?
  3. 为什么“class:'form-control'”参数是一种方法?它对我来说似乎不是一种方法,但它不是哈希,所以我认为它不应该是方法签名中的“选项”......

1 个答案:

答案 0 :(得分:1)

  

在&#34; ... f.password_field:密码......&#34; line,是两个参数   传递到password_field?所以它是一样的   &#34; f.password_field(:密码,课程:&#39;表格控制&#39;)?

f.password_field :password, class: 'form-control' - 在这里你将两个参数传递给f.password_field函数

  

根据pw_field的方法签名,&#34;:password&#34;应该   一个东西。然而,它是一个符号,据我所知更像是一个符号   字符串而不是指针。如何将此作为对象输入   感?

它不是一个对象,object_name对象名称

  

为什么&#34;类:&#39;表格控制&#39;&#34;参数一个方法?它似乎并没有   就像我的方法,但它不是哈希,所以我认为它不应该   &#34;选项&#34;在方法签名..

class: 'form-control'它不是方法,是参数,也是哈希。

  

&#34; class:&#39; form-control&#39;&#34;得到评估成HTML(以及什么   资源告诉我这是怎么发生的??

FormBuilder。它会在引擎盖下生成html并使用"class: 'form-control'"参数来设置类。

  

同样使用object_name,对象名称自动成为指针   一个对象?

object_name它是您正在使用的模型属性的名称。 password_field函数不知道,表单构建器知道。

我建议你阅读Ruby Basic