2017-04-12 1 views
1

Je sais que cette question a été posée avant et ils ont dit que «les modèles sont indépendants du contrôleur». Donc, en suivant le même code que j'ai fait pour d'autres modèles, je viens de renommer mon code de travail pour l'adapter à mon nouveau modèle. Mais je reçois une erreur undefined method 'userimages_path' Voici le code que j'utilise. Le modèle est userimage et le contrôleur est uploads.Rails: Modèle d'accès de contrôleur différent

Contrôleur/uploads_controller.rb

def new 
    @userimage = Userimage.new 
    end      


Modèle/userimage.rb est un fichier vide

Vues/uploads/new.html.erb (Cette ligne est de lancer l'erreur.)

<%= form_for @userimage do |f|%> 

Dans mon routes.rb

J'ai rake db:migrate plusieurs fois pour m'assurer que j'ai fait migrer la base de données en pensant que c'est peut-être pourquoi il ne peut pas trouver le Userimage

Qu'est-ce que j'ai fait de mal/manquant ici?

+1

peut vous montrer votre fichier de schéma/migration qui couvre l'image de l'utilisateur? –

+0

Pouvez-vous confirmer que votre modèle est 'Userimage' par rapport à' UserImage'? – jdgray

+0

'create_table" userimages ", force:: cascade faire | t | t.text "description" t.string "title" t.datetime "created_at", null: false t.datetime "updated_at", null: false end' – deskmonkey

Répondre

1

Il est magique Rails, lorsque vous ne spécifiez pas deuxième option (url) pour form_for, Rails essayer de le régler, dans votre cas <%= form_for @userimage do |f|%> convertis par Rails à <%= form_for @userimage, url: userimages_path do |f|%>, dans vos voies, il n'y a pas aide _path . Pour résoudre ce problème, exécutez bundle rake routes et définissez l'option url appropriée.

Check the documentation

+0

Pour moi, Rails est une technologie extraterrestre. Je suis impressionné à quel point il fait automatiquement des choses pour moi et ça fonctionne avec moins de code. .... Oh, oh! Mon ampoule vient de s'allumer! Donc les rails étaient routés selon le modèle/crud pas contrôleur/crud? .. intéressant. Ça marche!! J'étais mystifié pourquoi il cherchait userimages_path. Pensé qu'il était assez intelligent pour acheminer à new_uploads dans le formulaire_for donc je n'ai pas pensé à regarder là! Marqué comme réponse! Je vous remercie! – deskmonkey

0

essayer ci-dessous le code:

vue

<%= form_for @userimage, url: "/uploads" do |f|%> 
contrôleur

uploads

def create 
    ... 
end