I'm working on a project management app that has a dashboard which links to tasks that are overdue, due today, this week, next week etc.
I can display the task titles fine but can't get the links to work. I also want to display the associated project each linked task belongs to, but can't get that to work either.
The problem seems to be my inability to call the associated project ID for each task.
Controller:
def index @project = Project.new @projects = Project.all @tasks = @project.tasks.all # Custom Scopes @tasks_overdue = Task.overdue @tasks_today = Task.today end
View:
<% @tasks_overdue.each do |task| %> <%= link_to task.title, project_task_path(@project, task) %> <br> <%= @project.project_title %> <% end %>
Since this page is on today#index I can't pull an ID from the address bar. Normally something like @tasks = @project.tasks.all
works fine, just not in this case.
Is there any way I can pull the ID for the project associated with each task, since I can iterate through those without issue?
My first thought is that your associations are not set correctly (ie. Project, has_many :tasks / Task, belongs_to :project
). From there you should be able to set, like @tasks.first.project.id
or in #show
@task.project.id
.
Unrelated to the question, but: it might be useful for you to put your scope(s) into the model, along the lines of: scope :due_today, -> { where(due_date: DateTime.now) }
. You can use these scopes then like: @project.tasks.due_today
.
task.project.id
and task.project.project_title
did the trick Jack, thanks!
Join 27,623+ developers who get early access to new screencasts, articles, guides, updates, and more.