2016-04-19 3 views
4

J'essaie de comprendre comment faire une application avec Rails 4. Je continue à me retrouver dans les choses de base et je ne semble pas être capable d'identifier les principes à utiliser pour aller de l'avant.Comment définir un chemin de lien

J'ai un modèle de profil et un modèle industriel. Les associations sont:

Profil:

has_and_belongs_to_many :industries, join_table: 'industries_profiles' 

Industrie:

has_and_belongs_to_many :profiles, join_table: 'industries_profiles' 

Dans mon profil page show, je suis en train d'essayer de créer un lien vers la page de l'industrie:

<% @profile.industries.limit(5).each do |industry| %> 

    <%= link_to industry.sector.upcase, industry_path(@industry) %> 

<% end %> 

Je ne trouve rien qui fonctionne pour ce lien.

J'ai essayé ce qui suit:

industry_path(@profile.industry) 
industry_path(@profile.industry_id) 
industry_path(industry) 
industry_path(profile.industry) 
industry_path(industry.id) 
industry_path(industry_id) 

Mais tous sont des suppositions. Je ne sais pas comment préparer le dock API, donc je ne peux pas comprendre son contenu.

Quelqu'un peut-il voir comment créer un lien vers une page show de l'autre côté de l'association HABTM pour un seul enregistrement?

+0

Qu'avez-vous votre fichier routes.rb? 'industry_path (industry)' est celui que vous devriez utiliser. –

+0

J'ai: ressources: industries – Mel

+0

Lorsque j'essaie cela, lorsque je survole le lien, il montre un chemin qui a le bon id de l'industrie en elle. Mais je ne peux pas cliquer dessus - rien ne se passe – Mel

Répondre

0

Vous pouvez obtenir une liste de vos itinéraires en exécutant rake routes | grep industry dans votre ligne de commande, ce qui vous donnera une table avec le préfixe, l'action et le motif uri. Par exemple:

industries GET /industries(.:format)   industries#index 
       POST /industries(.:format)   industries#create 
new_industry GET /industries/new(.:format)  industries#new 
edit_industry GET /industries/:id/edit(.:format) industries#edit 
    industry GET /industries/:id(.:format)  industries#show 
       PATCH /industries/:id(.:format)  industries#update 
       PUT /industries/:id(.:format)  industries#update 
       DELETE /industries/:id(.:format)  industries#destroy 

Dans votre cas, vous devriez regarder le chemin show. Quelle est l'industrie et vous ajoutez _path à la fin de ce que votre préfixe est ci-dessus, ce qui ressort à industry_path. Et puisque vous avez déclaré votre variable industry lors de la définition de votre boucle, vous pouvez l'utiliser à la place de la variable d'instance.

Réponse courte: industry_path(industry)