Ruby on rails 为“创建嵌套模型”;新";控制器中的操作
我有一个模型:Ruby on rails 为“创建嵌套模型”;新";控制器中的操作,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个模型: class MyModel < ActiveRecord::Base attr_accessible #..... belongs_to :owner end 还有一个观点: = f.select :owner_id, options_from_collection_for_select(MyModel.some_scope, :id, :full_name, @data1.owner.id) 显然,@data1.owner.id是空的。如何将其设置为“非空”
class MyModel < ActiveRecord::Base
attr_accessible #.....
belongs_to :owner
end
还有一个观点:
= f.select :owner_id, options_from_collection_for_select(MyModel.some_scope, :id, :full_name, @data1.owner.id)
显然,
@data1.owner.id
是空的。如何将其设置为“非空”之所以@data1.owner.id
为空,是因为@data1
没有所有者
通过将此行添加到控制器中的新操作,可以生成所有者:
@data1.create_owner
其中传递到此方法的参数是所有者的属性。例如,他们的名字可能是马吕斯:
@data1.create_owner(first_name: 'Marius')
看到您在新方法中这样做,除非您对所有者的任何属性都有一些NOTNULL约束,否则我认为您可能希望将其保留为空
为@data1
创建此所有者应使用id填充,使@data1.owner.id
为“非空”。如果您在创建新MyModel时“知道”所有者,您可以这样做(假设own
是对所有者对象的引用):
所以
@data1
应该是对新MyModel对象的引用,并且owner\u id
设置为own的id
拼写错误owner.id
应该是owner\u id
@data1.create_owner(first_name: 'Marius')
@data1 = own.mymodels.new()