7
votes

Méthode non définie ..._ index_path Ruby sur rails

J'essaie d'obtenir un formulaire de base pour travailler et je me débats parce que je continue à obtenir l'erreur

  controller :profiles do
   get "newprofile" => "profiles#new"
   get "updateprofile" => "profiles#update"
   get "profile" => "profiles#home"
  end

  resources :profiles, :controller => 'profiles'


3 commentaires

DO ROUTHES RAKE Pour vérifier le chemin correct sur index méthode


À quoi ressemble votre fichier routtes.rb ?


Hé, j'ai ajouté mon fichier de routes pertinent afin de pouvoir voir ce que j'ai. La vue est également appelée new.html.erb car il s'agit de créer de nouveaux profils. Merci


5 Réponses :


1
votes

Si vous exécutez une commande "Rake Routes", effectuez "Profiles_index" apparaissent dans vos itinéraires? Habituellement pour la page d'index d'un modèle, l'index de travail est laissé de côté de sorte que l'itinéraire est profiles_path

Votre erreur vient probablement d'une vue où vous avez utilisé profiles_index_path au lieu de profiles_path


5 commentaires

Merci pour votre réponse. Le fichier de vue s'appelle nouveau.html.erb car il est de créer de nouveaux profils - serait génial de savoir ce que je dois changer pour résoudre ce problème. Merci encore :)


Vous n'utilisez pas 'profiles_index_path' dans New.html.erb .. ou vous n'avez pas publié tout le code. Je ne pense pas que le problème est à cette vue.


Étrange n'est pas ça! Ceci est tout le code et, à aucun point, je refuse profiles_index_path - mais l'erreur suggère que je fais dans la ligne d'ouverture form_for? L'URL que j'essaie de charger est localhost: 3000 / NewProfile


Je ne peux pas comprendre quel est le problème. Avez-vous essayé une recherche globale via tout votre projet pour "profiles_index_path"?


Malheureusement, il n'est certainement pas utilisé nulle part actuellement, l'application n'est pas très étendue, il serait donc facile de trouver :)



0
votes

Avez-vous essayé de remplacer votre format_for balayer avec ce qui suit?

<%= form_for @profile, :as => :post do |f| %>


2 commentaires

Hé, désolé oublié d'inclure cela. Le fichier de vue s'appelle nouveau.html.erb - toute aide supplémentaire que vous pouvez offrir serait très appréciée. :)


Hey Yosep, merci pour votre aide. Malheureusement, je reçois toujours la même erreur cependant :( vraiment je ne sais pas pourquoi ça se confondre!



1
votes

Je pense que c'est échoué à cause de la convention non suivie avec votre nom de modèle.

Donc, je pense que vous êtes problématique, c'est surtout autour de ce que vous ne suivez pas la convention sur le nom du modèle, ce qui serait classiquement singulier, car chaque instance représente un profil. Je pense que la forme_for aide tente de déterminer quoi faire avec elle et échouer en conséquence. Vous avez donc deux options pour essayer de résoudre. Refactor Le nom du modèle au singulier (je ne suis pas clairement clairement, à quel point cela serait difficile) ou passez le paramètre: URL de former_for, il sait donc où poster à. P>

<% form_for @profile, :url => path_to_create_action do |f| %>


4 commentaires

Salut dvg, c'est quand je vais à ../newprofile (qui devrait être un profil # nouveau selon mes itinéraires). Merci!


Que se passe-t-il si vous déplacez ressources: profils ,: contrôleur => "profils" au-dessus des autres itinéraires?


Toujours la même erreur tristement même si je déplace les ressources en haut du fichier de routes. Mon nom de modèle est pluriel, @profile est singulier tout comme l'appel en format_for. à votre santé


Merci pour votre aide DVG, je devais transformer mon modèle singulier - merci pour la première mise en valeur!



5
votes

Le problème est en effet la façon dont vous avez pluralisé votre nom de modèle. Ne fais pas ça. Il devrait s'agir d'un profil , pas un . Il y a que je sois un peu de travail pour vous permettre d'utiliser un nom de modèle pluriel, mais la réponse consiste à coller à la convention de rails plutôt que de combattre le cadre. Renommez votre modèle à Profil et l'URL_POR URL_FOR Comment activera correctement un nouvel objet de profil en un / Profils URL.


2 commentaires

Incroyable cela semble avoir travaillé! Merci de votre aide. Modèles = singulier, contrôleurs = pluriel sont ceux qui sont toujours les règles des rails?


Oui. Vos modèles doivent toujours être singuliers et les contrôleurs doivent toujours être pluriels.



1
votes

Je travaille avec rails 5 fort> et j'ai eu la même erreur et il a été spécifique à l'aide du mot multimédia code> comme modèle et ror utilisé moyen Code> Comme le pluriel, j'ai eu des itinéraires différents lors de l'exécution des itinéraires de râteau code>.

Qu'est-ce que j'ai fait pour réparer c'était: p>

  1. Supprimer le modèle que je viens de créer. P>

    rails g scaffold Media
    
  2. Modifier config / initialiseurs / inflication.rb code> avec: p>

    ActiveSupport::Inflector.inflections(:en) do |inflect|
        # Here you can put the singular and plural form you expect
        inflect.irregular 'media', 'medias'
    end
    
  3. exécutez à nouveau l'échafaudage: p>

    rails d scaffold Media
    


0 commentaires