2016-04-15 2 views
-3

J'essaie de créer une application dans Rails 4.Rails 4 - Formulaire d'expression pour un lien

J'ai un modèle de profil et un modèle d'organisation. L'organisation a un attribut appelé "titre".

Les associations sont:

Profile belongs_to organisation 

Organisations has_many profiles 

J'essaie de comprendre comment écrire un lien de ma page show profil à la page show organisation.

Je pense que c'est correct:

<%= link_to @profile.organisation.try(:title).upcase, organisation_path(@profile.organisation.id) %> 

Cependant, quand je l'essayer, je reçois cette erreur:

undefined method `id' for nil:NilClass 

je peux voir dans ma console que l'ID est profile.organisation pas nul - il a une valeur.

Quelqu'un peut-il voir ce que j'ai mal fait?

routes râteau - pour l'organisation:

organisations GET  /organisations(.:format)         organisations#index 
          POST  /organisations(.:format)         organisations#create 
      new_organisation GET  /organisations/new(.:format)        organisations#new 
      edit_organisation GET  /organisations/:id/edit(.:format)       organisations#edit 
       organisation GET  /organisations/:id(.:format)        organisations#show 
          PATCH  /organisations/:id(.:format)        organisations#update 
          PUT  /organisations/:id(.:format)        organisations#update 
          DELETE /organisations/:id(.:format)        organisations#destroy 
+0

essayez ceci '@ profile.organisation' au lieu de ce' @ profile.organisation.id' – uzaif

+0

Si je supprime id à la fin de cette ligne, j'obtiens cette erreur: Aucune route correspond {: action => "show" ,: controller => "organisations",: id => nil} manquant clés nécessaires: [: id] – Mel

+0

montrez-moi vos 'rake routes' et l'association du modèle .. – uzaif

Répondre

0

En fait, comme je l'avais -le code avait raison. J'ai dû réinitialiser mon db et recommencer. Quelque chose d'étrange a causé des problèmes de connexion. Si d'autres cherchent des liens, la façon dont je l'ai fait à l'origine était juste.