Errore tra il collegamento di due tabelle

Salve ragazzi, da giorni sto cercando di poter realizzare una lista
utenti con delle tabelle collegate
Le tabelle sono
users : id, description,id_group
phones :id , number user_id

class UsersController < ApplicationController

GET /users

GET /users.xml

def show
@user = User.find(params[:id])
@phones = Phone.all(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @user }
end

end

class PhonesController < ApplicationController

GET /phones

GET /phones.xml

def index
@phones = Phone.all

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @phones }
end

end

GET /phones/1

GET /phones/1.xml

def show
@phone = Phone.find(params[:id])

respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @phone }
end

end

GET /phones/new

GET /phones/new.xml

class User < ActiveRecord::Base
has_many :phones
end

class Phone < ActiveRecord::Base
belongs_to :user , :foreign_key =>‘user_id’
end
nella view\user.html.erb

Id: <%=h @user.id %>

User: <%=h @user.user %> <%=h @phones%>

Group: <%=h @user.group_id %>

mi restituisce l'errore undefined method `phone' for # ho provato in tutti i mod ma non riesco a venirne a capo . qualcuno mi puo suggerire dove sbaglio ? grazie mille ! fdibenedetto72

Fabio Di benedetto wrote:

nella view\user.html.erb

ma questa view a quale action nel controller si riferisce?
ipotizzo sia la “show”, allora la view dovrebbe essere: show.html.erb

belongs_to :user , :foreign_key =>‘user_id’

è fuorviante specificare la foreign_key se hai nominato il campo secondo
la “convention over configuration”

@phones = Phone.all(params[:id])

penso dovresti scrivere cosi:
@phones = Phone.all(:conditions => [‘user_id = ?’ params[:id]])

Ciao Aldo ,
si la view e’ la show.html.erb
ma se inserisco nel controller Userscontrollers cosi come mi hai scritto
tu all’esecuzione della view.html.erb mi da questo errore

C:/testapp/app/controllers/users_controller.rb:17: syntax error,
unexpected tIDENTIFIER, expecting ‘]’
@phones = Phone.all(:condition =>[‘user_id = ?’ params[:id]])
^
C:/testapp/app/controllers/users_controller.rb:17: syntax error,
unexpected ‘]’, expecting keyword_end
@phones = Phone.all(:condition =>[‘user_id = ?’ params[:id]])

mentre se lascio cosi com’era il controller dalla console ed anche
riesco a visializzare i/o record
tant’e che se scrivo <%= phones %> mi scrive i record trovati il mio
problema che non riesco a visualizzare gli attributi di @phones

Saluti

Fdibenedetto

Aldo I. wrote:

Fabio Di benedetto wrote:

nella view\user.html.erb

ma questa view a quale action nel controller si riferisce?
ipotizzo sia la “show”, allora la view dovrebbe essere: show.html.erb

belongs_to :user , :foreign_key =>‘user_id’

è fuorviante specificare la foreign_key se hai nominato il campo secondo
la “convention over configuration”

@phones = Phone.all(params[:id])

penso dovresti scrivere cosi:
@phones = Phone.all(:conditions => [‘user_id = ?’ params[:id]])

scusami, avevo saltato una virgola, va scritto cosi:

@phones = Phone.all(:conditions => [‘user_id = ?’, params[:id]])

Grazie mille!
Aldo I. wrote:

scusami, avevo saltato una virgola, va scritto cosi:

@phones = Phone.all(:conditions => [‘user_id = ?’, params[:id]])