这些奇怪的字符是什么意思?

时间:2011-05-31 09:23:39

标签: ruby-on-rails ruby symbols block

我正在阅读一本Ruby书,但它没有解释以下内容:

  1. 这是什么:validates :name, :presence => true

    • 我的意思是我知道它的作用但是validates是什么?它是验证器类的方法吗?如果是这样,为什么不首先提到类名呢?

    • 上一代码和一般的Rails中:的含义是什么?

  2. 在以下代码中:<%= form_for([@post, @post.comments.build]) do |f| %>

    • form_for是对象还是程序函数?

    • |

    • |f|字符的含义是什么?
  3. <%= link_to 'Edit Post', edit_post_path(@post) %>

    • 是谁,何时何地定义edit_post_path方法?

    • 它属于哪个班级?

1 个答案:

答案 0 :(得分:6)

  1. validates是一种方法,是Rails中validators的一部分。它在(实际上包含在)超类中声明,这就是为什么它不必在模型中声明。任何东西前面的:表示符号,而不是变量。符号是Ruby的一部分,有点类似于字符串。
  2. form_for是一种方法,它采用了许多参数和一个块(这就是之后有do的原因)。 |是Ruby语法的一部分,就是您封装代码块参数的方式。
  3. edit_post_path Rails魔术和路线定义。这是一种帮助方法。
  4. 我鼓励您阅读有关Ruby的this book,以便更熟悉符号,代码块,模块以及使Ruby成为优秀编程语言的其他内容。