2012-11-11 3 views
1

J'essaie d'obtenir une relation 1 à 1 simple dans Rails 3 où un utilisateur peut se connecter à un compte bancaire.relation un-à-un dans Rails

class User < ActiveRecord::Base 
    has_one :bank 
    accepts_nested_attributes_for :bank 
    attr_accessible :bank_attributes 
end 

class Bank < ActiveRecord::Base 
    belongs_to :user 
end 

Route

resources :users do 
    resources :bank 

Maintenant, quand je construis un nouvel objet bancaire pour un utilisateur dans les utilisateurs/1/banque/nouvelle comme ceci:

def new 
    @user = User.find(current_user.id) 
    @bank = @user.build_bank 
end 

je reçois une erreur sur mon pour qui ressemble à ceci:

<%= simple_form_for(@bank) do |f| %> 

L'erreur est:

undefined method `banks_path' for #<#<Class:0x007fa7bd090f08>:0x007fa7c0545b40> 

Mon but est d'avoir un formulaire pour un utilisateur d'y ajouter des informations de compte bancaire .. L'espoir que quelqu'un peut me aider dans la bonne direction pour ce faire. J'utilise aussi ActiveAdmin et la relation avec les formulaires etc fonctionne bien ici.

Toute aide est appréciée!

+1

mais pas sûr, je suppose que vous devez déclarer la ressource de route au pluriel, même si elle est 1-1 association. alors essayez 'resources: banks'. si vous faites ainsi, vous devrez renommer le contrôleur 'BanksController' dans' banks_controller.rb' – HungryCoder

+0

Thx HungryCoder votre solution a fonctionné .. Je ne comprends toujours pas pourquoi la banque devait être plurielle mais cela fonctionne maintenant. – Daniel

+0

Je l'ajoute comme réponse pour que vous puissiez l'accepter. ça va nous aider tous les deux :) – HungryCoder

Répondre

0

Vous devez déclarer la ressource au pluriel, quel que soit le type d'association.

Ainsi, votre déclaration ressource

resources :users do 
    resource :banks 
end 
1

Depuis la banque est imbriqué sous l'utilisateur, vous devez donner à l'utilisateur la forme:

<%= simple_form_for([@user, @bank]) do |f| %> 

En outre, votre fichier itinéraires doivent être

resources :users do 
    resource :bank 

Cela vous donnera un user_bank_path pour un utilisateur

+0

Je devrais avoir posté ceci dans ma question tout de suite mais j'ai essayé d'ajouter l'utilisateur au formulaire et cela donne l'erreur: méthode non définie 'user_banks_path 'donc ça continue d'être pural :(i Je ne comprends pas pourquoi .. – Daniel

+0

HungryCoder avait raison .. J'ai édité la banque aux banques dans les routes et les noms et cela fonctionne maintenant .. bizarre non? – Daniel

+0

Ah, ok, édité ma réponse –