0

我对 rails 中的变量被引用和/或分配一些值的方式感到非常困惑。

谁能告诉我以下行/语句的含义?

(我来自 C 世界,我很难理解 Ruby/Rails 语法)

<1> 我们在这里声明:name:email作为变量吗?另外,为什么colon前面有一个nameand email

attr_accessible :name, :email

<2> 赋值给变量 从上面的例子中,如果nameemail是变量,我如何给它们赋值?

def foo
  name = 'New Name'
end

或者

def foo
  :name => 'New Name'
end

?

4

1 回答 1

0

在 Rails 中,您使用 ORM 从表中提取字段名称,例如,如果您有一个表items

|id | name    |
|1  | a string|

您将拥有class Item,假设是一个实例item,然后您可以访问:

item.id      # -> 1
item.name    # -> a string

根据你的例子:

def foo
  name = 'New Name'  # You are not setting the variable, you are creating a local variable called name
  # To set variable
  self.name = 'a name'
end

或者

def foo
  :name => 'New Name' # you are returning a hash, but you are lacking brackets, not setting a variable
end

该行attr_accessible :name, :email允许您执行此操作:

Item.new({
  name: 'asd',
  email: 'sad'
})

例如,如果您不添加:emailin attr_accessible,则上一个会发出警告,例如:

Can't mass-assign protected attributes: email

当您在控制器中收到参数时,这很有用,例如:

Item.new(params[:item])

看到 params,是一个哈希,你可以在 rails 服务器控制台看到它。

于 2013-03-01T19:55:42.173 回答