ruby-on-rails - Ruby on Rails 调用对象的方法

标签 ruby-on-rails ruby methods calling-convention

我对 ruby​​ 有一些不理解的地方。

@items.each do |item| 
  item.column
end

将工作并返回 rails 中该列的值。但是

item = @items[some_item_id]
item.column

会给我一个 nil 未找到异常的方法。 两次我都得到了对象,但只有第一次我才能访问 Rails 数据方法。

那些破折号是什么意思 |...|做什么以及如何访问这些方法?

最佳答案

这会将 所有元素 收集在 @items 中以进入一个 block :

@items.each

#each 将适用于散列、数组和其他可枚举。


这会在 @items 中选择一个特定的元素:

@items[some_item_id]

方括号是一种方法(名为#[]),用于哈希和数组中的元素引用。如果您收到 MethodNotFound 错误,这意味着 @items 不是散列或数组,并且没有名为 #[] 的方法。

如果 @items 是 ActiveRecord 对象的集合,并且您想通过 ID 选择一个对象,请使用:

@items.find(some_item_id)

关于ruby-on-rails - Ruby on Rails 调用对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25720868/

相关文章:

java - Java 是 "pass-by-reference"还是 "pass-by-value"?

ruby-on-rails - rails + 新遗物 : What does RPM mean?

ruby - 是什么让 Ruby 中的 `while` 循环比其他循环更快?

ruby - 使用 ruby​​ 的 redis 操作在 ppoll 中阻塞

ruby-on-rails - 如何在rails_admin中将文本字段覆盖为textarea

grails - 在域类中添加 getter 方法后出错

Javascript 原型(prototype)、对象、构造函数??我很困惑

ruby-on-rails - 即使提供记录 ID 也无法更新嵌套属性

ruby-on-rails - 使用 cancan 和 rolify 进行角色管理

ruby-on-rails - 如何在 Rails 环境中将参数传递给 Rake 任务?