我有一个用户模型,每个用户都有一个公司名称和与之关联的城市。对于项目,我需要根据城市列出每个用户。例如:citywise / san-francisco,citywise / new-york。目前这些都是模型
class User < ActiveRecord::Base
attr_accessible :name, :company
belongs_to :city
end
class City < ActiveRecord::Base
attr_accessible :name, :slug
has_many :users
end
此外,城市不能是预定义的列表。应该在每个用户都在数据库中创建时创建它。
那么,如何在创建/更新用户时访问或创建城市?
答案 0 :(得分:1)
首先,您需要将accepts_nested_attributes_for和attributes_for:cities_attributes添加到您的City模型中:
class City < ActiveRecord::Base
attr_accessible :name, :slug, attributes_for :cities_attributes
accepts_nested_attributes_for :cities
has_many_users
end
由于您现在可以访问City模型中的所有属性,因此您可以使用以下字段将这些属性包含在表单中。
<%= form_for@city do |f| %>
# City attributes
<%= f.fields_for :users do |c| %>
# User attributes
<% end %>
<% end %>
在索引视图中,您还可以使用嵌套:
<% @cities.each do |city| %>
# city attributes goes here
<% city.users.each do |user| %>
# user attributes goes here
第一行显示您定义的每个城市的所有属性,而第二行显示特定城市的每个用户的属性。
答案 1 :(得分:0)
您需要查看用户模型上的嵌套属性。
以下是accepts_nested_attributes_for
的文档,该方法可以帮助您解决问题。 http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html