belongs_to :publisher -Problem przy wyświetlaniu rekordów

Cześć mam problem z relacją
Otóż mam w tym przypadku dwie tabele.

Publisher <—Site

create_table “publishers”, force: true do |t|
t.string “name”
t.string “site”
t.string “surname”
t.string “adress”
t.string “email”
t.string “telephone”
t.datetime “created_at”
t.datetime “updated_at”
end

create_table “sites”, force: true do |t|
t.string “url”
t.string “name”
t.integer “publisher_id”
t.datetime “created_at”
t.datetime “updated_at”
end

Oraz w modelu:
class Site < ActiveRecord::Base
belongs_to : publisher (tutaj postawiłem spację specjalnie między :p)
end

Mam listę publisherów:

<% @publisher.each do |publisher|%>
<tr>
	<td><%= publisher.name%></td>
	<td><%= publisher.surname%></td>
	<td><%= publisher.email%></td>
	<td><%= publisher.adress%></td>
	<td><%= publisher.telephone%></td>
	<td class = "actions">
		<%= link_to "Delete",publisher,:method => :delete,class: "label label-danger"%>
		<%= link_to "Edit" , edit_publisher_path(publisher),class: "label label-info" %>
		<%= link_to "Show" , publisher_path(publisher),class: "label label-success" %>
	</td>
</tr><%end%>

Oraz show publishera w ktorym ma się mieścić site przypisany do tego publishera.
Jednak dostaje błąd:

undefined method `url’ for “Time”:String

Prosiłbym o podpowiedź :slight_smile:

@publisher.each da ci listę pól objektu @publisher.
Użyj klasę Pablisher żeby dośtać listę publisherów:
<%Publisher.all.each do |publisher| %>

Pętla działa poprawnie , tylko jest problem , że zamiast nazwy strony(site) dostaje sam Site we wszystkich przypadkach.

<% Publisher.all.each do |pub|%>
<tr>
	<td><%= pub.sites.name%></td>
	<td><%= pub.sites.url%></td>
</tr><%end%>

Problem jest również , gdy chce wyświetlić pub.sites.url

undefined method `url’ for #Site::ActiveRecord_Associations_CollectionProxy:0x0000000513d198

A tam nie powinno być coś w stylu:

<% Publisher.all.each do |pub|%>
    <% pub.sites.each do |site| %>
    <tr>
	    <td><%= site.name %></td>
	    <td><%= site.url %></td>
    </tr>
    <% end %>
<%end%>

Ponownie zaczynam zaczynanie z Railsami po roku, więc możliwe, że palnąłem jakąś głupotę :slight_smile:

Wyświetlają się teraz poprawne wartości , tylko problem jest taki , że wyświetlają się wszystkie witryny , nawet te nie należące do danego publishera;/

A założenie jest takie , że każdy publisher ma jakieś strony przypisane do siebie. Stąd relacja belongs_to :publisher

Dałeś pętlę po wszystkich publisherach na początku, myślałem, że o to Ci chodzi. W takim razie usuń ją i zamiast pub.sites.each daj @publisher.sites.each czy gdzie tam trzymasz tego publishera.