Hi, I've been trying to find an answer for this problem in the last couple hours, but I think no discussion was about this exact same thing. So here it goes, hope someone can help.
I'm trying to spec a view which works correctly on the browser, but that generates the following error when I run "rake spec:views". ActionView::TemplateError in '/survey/show should display the "question 4" heading correctly' You have a nil object when you didn't expect it! The error occurred while evaluating nil.position On line #1 of app/views/survey/_question_for_candidate.rhtml 1: <div class="question question-<%= question.position %>"> 2: <p class="heading"> 3: <span class="number"><%= question.position %>.</span> 4: <span class="description"><%= question.description %></span> RSpec is telling me that the "question" object is nil. I can't figure it out why. Here's the spec that generates the error (the "it" block should test some tags inside the "response" object): require File.dirname(__FILE__) + '/../../spec_helper' describe '/survey/show' do fixtures 'questions', 'alternatives' before(:each) do assigns[:configurations] = {:survey_name => 'Whatever'} assigns[:questions] = Array.new assigns[:questions][4] = questions(:faixa_etaria) @faixa_etaria = questions(:faixa_etaria) end it 'should display the "question 4" heading correctly' do render 'survey/show' end end Here's the :faixa_etaria Question fixture I'm using: faixa_etaria: id: 1 question_type_id: 1 description: 'Em qual das faixas etárias abaixo você se inclui?' position: 4 (The description value is in Portuguese). Here's the "show" method inside the SurveyController: def show @configurations = {} Configuration.find(:all).each { |c| @configurations[c.name.to_sym] = c.value } @questions = {} Question.find(:all).each { |q| @questions[q.position] = q } end Here's the piece of code inside the "show.rhtml" template that's calling the helper method that will cause that error: <%= render_question(@questions[4]) %> Here's the "render_question" method implementation, inside the SurveyHelper class (invoking "render" seems to be the problem, but I don't know why): def render_question(question) render(:partial => 'question_for_candidate', :locals => {:question => question}) end The :locals Hash has :question as a key, and that is the variable that RSpec is complaining about inside the partial. Finally, here's the "question_for_candidate" partial: <div class="question question-<%= question.position %>"> <p class="heading"> <span class="number"><%= question.position %>.</span> <span class="description"><%= question.description %></span> </p> <% for alternative in question.alternatives -%> <%= radio_button 'candidate', "question_#{question.id}", alternative.id%> <label for="candidate_question"><%= alternative.description %></label> <br /> <% end -%> </div> I'm not that experienced with Rails nor RSpec, so I'm totally lost about this problem. -- Caio Moritz Ronchi
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users