0

Iam nouveau à ruby ​​sur rails, je vais créer un système de location en ligne.Association tous les modèles en rubis sur rails

C'est le modèle de base de l'emplacement

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 

première question est de savoir comment peut afficher tous comme ci-dessous

  • Alaska
  • Californie
    • Los Angeles
    • Fresno
      • Cincotta (Fresno)
      • Hammond (Fresno)
      • Melvin (Fresno)
        • Melvin 1
        • Melvin 2
  • Arizona
  • Colorado

Deuxième question, comment créer tous les modèles d'ariane

Californie >> Fresno >> Melvin >> Melvin 1

+0

je suis essayer association toutes les clés étrangères model.Added à la table de table associée, Mon home.html.erb comment afficher l'arborescence? –

Répondre

0

Vous voulez probablement introduire une hiérarchie dans vos objets de données. Cela peut être fait de plusieurs façons. Jetez un oeil à the ancestry gem

Si vous voulez des trucs de code dur:

# 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> 

Pour Breadcrumbs vous auriez besoin d'introduire une méthode d'ascendance dans chaque modèle. par exemple.

class City 
    ... 
    def ancestry 
    district.ancestry << self 
    end 
    ... 
end 

# ... other classes 

class State 
    ... 
    def ancestry 
    [self] 
    end 
end 

Ensuite, vous pouvez rendre une panure partielle

# 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> 
+0

Merci, j'ai ajouté une perle d'ancêtre à mon application. –

+0

a ajouté une nouvelle question http://stackoverflow.com/questions/24787750/creating-has-many-association-with-ancestry-gem Veuillez me donner un coup de fil –

Questions connexes