Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

03 . Limitando acesso aos jobs através de filtros - Capitulo 3

o projeto esta com esse erro alguém pode me ajudar.

NoMethodError in Jobs#show

Showing C:/Users/Fernando/pjRails/app/views/jobs/show.html.erb where line #6 raised:

undefined method `comments' for #

3: <%= simple_format @job.description %>
4: 
5: <p>
6:   <%= pluralize(@job.comments.size, "comment") %> |
7:   <%= link_to 'Edit', edit_job_path(@job) %> |
8:   <%= link_to 'Back', jobs_path %>
9: </p>

Rails.root: C:/Users/Fernando/pjRails

Application Trace | Framework Trace | Full Trace app/views/jobs/show.html.erb:6:in _app_views_jobs_show_html_erb__704731355_28169460' app/controllers/jobs_controller.rb:25:inshow'

6 respostas

Fernando,

Como está sua classe Job? Poste ela aqui pra vermos se está faltando alguma coisa.

Oi Fernando! Sua classe job contém a declaração "has_many :comments" ?

a minha class jobs

class Job < ActiveRecord::Base
  has_many :comments
  belongs_to :company
  scope :most_recent, order("created_at DESC")
  attr_accessible :description, :title, :premium
  validates_presence_of :description, :title, :company_id
end

Essa é minha class jobs postei errado o anterior

class Job < ActiveRecord::Base
  has_many :comments
  belongs_to :company
  scope :most_recent, order("created_at DESC")
  attr_accessible :description, :title, :premium
  validates_presence_of :description, :title, :company_id
end

qual sua versão do rails?

solução!

Tive um erro semelhante nessa aula: NoMethodError undefined method `name' for nil:NilClass

O erro estava sendo causado pelo fato de que os jobs antigos estavam ainda sem uma empresa associada, e no "jobs_helper.rb" há uma referência direta a empresa do job, gerando o erro, conforme linha abaixo: title = raw("#{h(job.title)} - #{h(job.company.name)}")

Incluí um "if" antes para verificar se havia empresa associada ao job antes, caso contrario só exibe o titulo do job sem o nome da empresa:

def job_title(job) if job.company title = raw("#{h(job.title)} - #{h(job.company.name)}") else title = raw("#{h(job.title)}") title = title + " - No company for this job." end

Com isso o erro foi resolvido no meu caso.