-1

我有一个模型:

class MyModel < ActiveRecord::Base
  attr_accessible #.....

  belongs_to :owner
end

还有一个控制器的动作:

  def new
    @data1 = MyModel.new
  end

还有一个观点:

= f.select :owner_id, options_from_collection_for_select(MyModel.some_scope, :id, :full_name, @data1.owner.id)

显然,@data1.owner.id是空的。如何使其“非空”?

4

2 回答 2

1

空的原因@data1.owner.id是因为@data1没有所有者。

您可以通过将此行添加到控制器中的新操作来生成所有者:

@data1.create_owner

您传递给此方法的参数是您所有者的属性。例如,他们的名字可能是 Marius:

@data1.create_owner(first_name: 'Marius')

看到您在新方法中执行此操作,除非您对所有者的任何属性有一些非空约束,否则我想您可能只想将其留空。

创建此所有者@data1应使用 id 填充它,使@data1.owner.id“非空”。

于 2013-06-21T07:20:44.050 回答
-1

如果您在创建 new MyModel 时“知道”所有者,您可以执行以下操作(假设own是所有者对象的引用):

@data1 = own.mymodels.new()

所以@data1应该是对owner_id设置为 own's 的新 MyModel 对象的引用id

于 2013-06-21T08:04:30.530 回答