Ask A Question

Notifications

You’re not receiving notifications from this thread.

Nested Forms Tutorial: How do you display the Tasks in the Project Index and Show Views?

Ryan Kulp asked in Rails

I am trying to display the Tasks on the Products#index and get Type Error in Projects#index
"can't cast Enumerator"

How can I display attributes from tasks on the Products views?

Here's my code -
ProjectsController:

def index
@projects = Project.all
@projects_id = @projects.find(:project_id)
@tasks = Project.where(:project_id => @projects_id).all
end

Projects#index:
<% @tasks.each do |task| %>
<%= task.description %>
<% end %>

AddIndexToTask migration:
def change
add_index :tasks, :project_id
end

Reply

I got it working.

def index
@projects = Project.all
end

Projects#index:

<% project.tasks.each do |task| %>
<%= task.description %>
<% end %>

Reply

While above solution works, looks like you had a typo here:
@tasks = Project.where(:project_id => @projects_id).all

instead of @tasks = Task.where(:project_id => @projects_id).all

Reply

Thanks @eelcoj ! I caught that and it still wouldn't work so I dropped the two lines in the controller. Then used project.tasks.each block in the index so I didn't have to create an instance variable after all.

Reply

Ah, another typo—though you got it working, but for maintainability—a (possible) solution. @projects_id returns an object, while it needs an array. That line should be something like this: @projects_id = @projects.find(:project_id).pluck(:id) (which should return [1, 2, 3].

Reply
Join the discussion
Create an account Log in

Want to stay up-to-date with Ruby on Rails?

Join 83,453+ developers who get early access to new tutorials, screencasts, articles, and more.

    We care about the protection of your data. Read our Privacy Policy.