-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I’ve been working my way through the Agile book and just completed
the depot sample application. I learned quite a bit along the way.
On page 171 we are led through the creation of a test (that fails)
for new code. The new code (a search function) is left as an exercise
for the reader. Well, I think I solved it but I’m not sure I did it
right (even though it passes the test).
After much experimentation, here’s what I did:
- Edit the depot/app/controller/search_controller.rb file:
class SearchController < ApplicationController
def search
@query = String.new(params[:query])
@products = Product.find(:all,
:conditions => “title like ‘%#{@query}
%’ OR
description like ‘%#{@query}%’”)
flash[:notice] = "Found #{@products.size} product(s)."
end
end
-
cp depot/app/views/layout/store.rhtml depot/app/views/layout/
search.rhtml -
cp depot/app/views/store/index.rhtml depot/app/views/search/
search.rhtml -
Edit depot/app/views/search/search.rhtml
Add in another set oftags around it so we have as the outermost one. It now looks like:<% @products.each do |product| %><%= h product.title %>
<%= product.description %> <%= fmt_dollars(product.price) %> <%= link_to 'Add to Cart', {:action => 'add_to_cart', :id => product }, :class => 'addtocart' %>
<%= link_to “Show my cart”, :action => “display_cart” %>
-
Change the test so it does “assert_template ‘search/search’”
instead of “assert_template ‘search/results’”. -
There is no step six.
Was there a better or easier way of accomplishing this task?
Also, why did the book want to test “assert_template ‘search/
results’”? That seems like an error to me. The default view for a
controller’s method (action) has the same name as the action, right?
Unless you do a “redirect_to :action => ‘results’” in which case the
“assert_response :success” would now fail because we are redirecting
to a page with a different name. This really confused me and caused
me to flail around much longer than necessary to solve this problem.Or is the test correct and I can have an action named “search”
rendered by a view named “results”?cr
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (Darwin)iD8DBQFEW9yFtEOEsNMQp04RAnLJAJ9KltH+wGA1jp4Fc+SQMUaCoDiccACeK7dM
UPIxhl1BUNhanuih2h0mHJU=
=fk43
-----END PGP SIGNATURE----- -