Forum: Italian Ruby user group errore tra il collegamento di due tabelle

Posted by fdibe nedetto (fdibenedetto72)
on 2010-08-17 20:02
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

<p>
  <b>Id:</b>
  <%=h @user.id %>
</p>

<p>
  <b>User:</b>
  <%=h @user.user %>
  <%=h @phones%>
</p>

<p>
  <b>Group:</b>
  <%=h @user.group_id %>
</p>
mi restituisce l'errore
undefined method `phone' for #<Phone:0x3d91820>
ho provato in tutti i mod ma non riesco a venirne a capo .
qualcuno mi puo suggerire dove sbaglio ?
grazie mille !
fdibenedetto72
Posted by Aldo Italo (aldoitalo)
on 2010-08-17 23:39
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]])

Posted by fdibe nedetto (fdibenedetto72)
on 2010-08-18 01:56
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 Italo 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]])
Posted by Aldo Italo (aldoitalo)
on 2010-08-18 02:33
scusami, avevo saltato una virgola, va scritto cosi:

@phones = Phone.all(:conditions => ['user_id = ?', params[:id]])
Posted by fdibe nedetto (fdibenedetto72)
on 2010-08-18 12:41
Grazie mille!
Aldo Italo wrote:
> scusami, avevo saltato una virgola, va scritto cosi:
> 
> @phones = Phone.all(:conditions => ['user_id = ?', params[:id]])
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.