我是红宝石的新手,我将创建在线租金系统。
这是位置基准模型
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
第一个问题是如何显示如下所示的所有内容
第二个问题是,如何创建面包屑所有模型
加利福尼亚州>>弗雷斯诺>>梅尔文>>梅尔文1
您可能希望将层次结构引入数据对象。这可以通过两种方法来完成。看看祖先的宝石
如果您想对代码进行硬编码:
# 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>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句