Ciao a tutti,
sono alle prime armi di Ruby on Rails. Ho creato la mia piccola
applicazione web ed ho una tabella links che contiene i link da
visualizzare in una pagina del sito. Volendo dividere i link in
categorie ho creato una tabella categories.
Questo è il codice SQL delle due tabelle:
DROP TABLE IF EXISTS xbrail2_production
.categories
;
CREATE TABLE xbrail2_production
.categories
(
id
int(10) unsigned NOT NULL auto_increment,
name_en
varchar(255) default NULL,
name_it
varchar(255) default NULL,
PRIMARY KEY USING BTREE (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DROP TABLE IF EXISTS xbrail2_production
.links
;
CREATE TABLE xbrail2_production
.links
(
id
int(11) NOT NULL auto_increment,
site_name
varchar(255) default NULL,
subtitle_en
text,
abstract_en
text,
category
varchar(255) default NULL,
url
varchar(255) default NULL,
top_site
tinyint(1) default NULL,
subtitle_it
text,
abstract_it
text,
categoryId
int(10) unsigned default ‘1’,
PRIMARY KEY USING BTREE (id
),
KEY FK_links_categories
(categoryId
),
CONSTRAINT FK_links_categories
FOREIGN KEY (categoryId
) REFERENCES
categories
(id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Nel model Link ho messo belongs_to :categories nel model Category ho
messo has_many :links.
Nella pagina di amministrazione del sito ho la lista completa dei link
con il campo categoryId che mi visualizza l’identificativo (numero
intero) della categoria.
Come posso fare a visualizzare il nome della categoria al posto del id?
Io ho provato dichiarare un metodo nel model link che fa una join tra le
due tabelle:
def find_category_name
name = Link.find(:all, :joins => “INNER JOIN categories on
categories.id = categoryId”)
end
Purtroppo non sò se sono sulla buona strada e se sì come andare avanti.
Vi srivo il codice della view list che visualizza la lista dei link:
<% for link in @links %>
<%=h(link.site_name) %>
<%=h(link.category) %>
<%=h(link.categoryId) %>
…
Questo è il controller con il metodo che crea la list
def list
@link_pages, @links = paginate :links, :per_page => 15
end
Qualche suggerimento? Scusate la mia domanda banale e probabilmente
anche la poca chiarezza nell’esporre il problema ma purtroppo ho poche
idee e ben confuse.
Vi ringrazio aticipatamente per le risposte e la pazienza.
Saluti
Taddei Fabrizio
___________________________________
L’email della prossima generazione? Puoi averla con la nuova Yahoo!
Mail: Yahoo Search - Ricerca nel Web | Motore di Ricerca