Iteracja tablicy (lub hash?) - kolejny problem początkującego

Jako że dział nazywa się Zielona szkoła, a użytkowników widzę tu życzliwych, to pozwolę sobie jeszcze raz poprosić o rade.

Mam dwa modele, i prosty problem.

project.rb

class Project < ActiveRecord::Base has_many :tasks, :foreign_key => "project_id" end
i task.rb

class Task < ActiveRecord::Base belongs_to :project, :foreign_key => "project_id", :class_name => "Project" end
w show.html.erb w widoku dla projects chcę wyświetlić tytuły wszystkich tasków przypisanych do danego projektu.

 <%=h @project.tasks.inspect %>

zwraca mi
[#<Task id: 1, title: “testowy task”, description: “sialala”, project_id: 1, created_at: “2009-08-07 12:37:58”, updated_at: “2009-08-07 12:37:58”>, #<Task id: 2, title: “drugi task”, description: “masz zrobic to i tamto!”, project_id: 1, created_at: “2009-08-08 11:52:35”, updated_at: “2009-08-08 11:52:35”>]

Czyli pobiera dobre rekordy, problem mój pewnie zabawny, jest taki że nie potrafię sobie tego przetworzyć tak jakbym chciał.
W jaki sposób pętlą wyciągnąć wszystkie załóżmy tytuły tasków? Większość moich prób zastosowania przykładów z googla czy książek kończy się np takim wynikiem
#Task:0x47116d8#Task:0x47108dc więc albo nie do końca rozumiem działanie pętli w rubym, albo za mało mądry na to jestem :wink:

z góry dziękuje za odpowiedzi

<% @project.tasks.each do |task| %> <%= task.title %> <% end %>
http://www.ruby-doc.org/core/classes/Array.html#M002173

Nie potrzebujesz też tego:

:foreign_key => "project_id", :class_name => "Project"

Tych opcji używa się tylko wtedy jeśli asocjacja/klasa ma inną nazwę niż klucz obcy. U Ciebie klucz nazywa się project_id (domyślna konwencja), klasa Project dlatego nie ma potrzeby pisania tego.

dzięki za szybkie odpowiedzi!
jestem przekonany że próbowałem takiej pętli, bo jest to raczej trywialna rzecz ale nie mam pojęcia czemu mi nie wychodziło, widocznie coś nie tak jednak zrobiłem :slight_smile:

Zwróc uwagę na różnicę między:

<%= cośtam %>
<% cośtam %>

Jeśli pętle i inne instrukcje sterujące poprzedzisz znakiem = to nie będzie działać. Może to było przyczyną.

W kontrolerze:

@tasks_names = @project.tasks.collect(&:name)

W widoku:

[code=ruby]


    <% for name in @tasks_names %>
  • <%= name %>
  • <% end %>
[/code] &:name - to jest symbol#to_proc bodaj, całkiem fajna sprawa