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]])