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 76,990+ developers who get early access to new tutorials, screencasts, articles, and more.

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

    Screencast tutorials to help you learn Ruby on Rails, Javascript, Hotwire, Turbo, Stimulus.js, PostgreSQL, MySQL, Ubuntu, and more.

    © 2023 GoRails, LLC. All rights reserved.