我是刚接触过红宝石的rails,我要创建在线租赁系统。
这是位置基模型。
app/models/state.rb
Class State < ActiveRecord::Base
has_many :provinces
end
app/models/province.rb
Class Province < ActiveRecord::Base
belongs_to :state
has_many :districts
end
app/models/district.rb
Class District < ActiveRecord::Base
belongs_to :province
has_many :cities
end
app/models/city.rb
Class City < ActiveRecord::Base
belongs_to :district
end的第一个问题是如何在下面显示
的第二个问题是,如何创建全模型
加利福尼亚>> Fresno >> Melvin >> Melvin 1
发布于 2014-07-16 09:40:09
您可能希望在数据对象中引入层次结构。这可以通过几种方式来完成。看看祖先宝石
如果你想硬编码的话:
# locations_controller.rb
def index
@locations = State.all
end
# app/views/locations/index.html.erb
<ul>
<%= render @locations %>
</ul>
# app/views/locations/_state.html.erb
<li>
<%= state.name %>
<% if state.provinces.present? %>
<ul>
<%= render state.provinces %>
</ul>
<% end %>
</li>
# app/views/locations/_province.html.erb
<li>
<%= province.name %>
<% if province.districts.present? %>
<ul>
<%= render province.districts %>
</ul>
<% end %>
</li>
# app/views/locations/_district.html.erb
<li>
<%= district.name %>
<% if district.cities.present? %>
<ul>
<%= render district.cities %>
</ul>
<% end %>
</li>
# app/views/locations/_city.html.erb
<li>
<%= city.name %>
</li> 对于面包屑,您需要在每个模型中引入一个祖先方法。例如:
class City
...
def ancestry
district.ancestry << self
end
...
end
# ... other classes
class State
...
def ancestry
[self]
end
end然后,您可以将面包屑部分呈现出来。
# app/views/layout.html.erb
<%= render partial: 'shared/breadcrumbs', locals: { ancestry: @some_instance.
def breadcrumbs(ancestry)
ancestry
end
# app/views/shared/_breadcrumbs.html.erb
<ul>
<% ancestry.each do |location| %>
<li>
<%= link_to location.name, url_for(location) %>
</li>
<% end %>
</ul>https://stackoverflow.com/questions/24776016
复制相似问题