I am working on a Yahoo Answers app to improve my Rails skills. So far, I have installed two Question and Answer models, and they are nested in this way:
resources :questions do
resources :answers
end
I did tests for controllers, models, and question views, but I have minor problems presenting answers and nested routes. I use Rspec and Factory girl.
I have the following test:
describe "answers/new.html.erb" do
before(:each) do
@question = Factory(:valid_question)
@answer = Factory(:valid_answer)
assign(:question, @question)
assign(:answer, stub_model(Answer,
:text => "MyString",
:question_id => 1
).as_new_record)
end
it "renders new answer form" do
render
assert_select "form", :action => question_answers_path(@question), :method => "post" do
assert_select "textarea#answer_text", :name => "answer[text]"
assert_select "input#answer_question_id", :name => "answer[question_id]"
end
end
end
and whenever I run the test, I get the following message:
3) answers/new.html.erb renders new answer form
Failure/Error: render
ActionView::Template::Error:
No route matches {:controller=>"answers"}
I have tried many things how to do
render new_question_answer_path(@question)
but I get this:
3) answers/new.html.erb renders new answer form
Failure/Error: render new_question_answer_path(@question.id)
ActionView::MissingTemplate:
Missing partial /questions/1/answers/new with {:handlers=>[:erb, :builder, :coffee], :formats=>[:html, :text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :
url_encoded_form, :json], :locale=>[:en, :en]}. Searched in:
* "/home/juan/rails_projects/answers/app/views"
Could you help me with this? I'm a little impolite now.