diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 8beba67..415dd4c 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -272,4 +272,14 @@ module ApplicationHelper
return _('No product') unless product
link_to product.name, :controller => 'catalog', :action => 'show', :id => product, :profile => product.enterprise.identifier
end
+
+ def partial_for_class(klass)
+ name = klass.name.underscore
+ if File.exists?(File.join(RAILS_ROOT, 'app', 'views', params[:controller], "_#{name}.rhtml"))
+ name
+ else
+ partial_for_class(klass.superclass)
+ end
+ end
+
end
diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb
index 95ff74e..35ee5ba 100644
--- a/app/helpers/search_helper.rb
+++ b/app/helpers/search_helper.rb
@@ -1,14 +1,5 @@
module SearchHelper
- def partial_for_hit(klass)
- name = klass.name.underscore
- if File.exists?(File.join(RAILS_ROOT, 'app', 'views', 'search', "_#{name}.rhtml"))
- name
- else
- partial_for_hit(klass.superclass)
- end
- end
-
def relevance_for(hit)
n = (hit.ferret_score if hit.respond_to?(:ferret_score))
n ||= 1.0
diff --git a/app/views/search/index.rhtml b/app/views/search/index.rhtml
index d990cc8..3c5879b 100644
--- a/app/views/search/index.rhtml
+++ b/app/views/search/index.rhtml
@@ -1,7 +1,7 @@
<%= _('Search results for "%s"') % @query %>
<% @results.each do |hit| %>
- <%= render :partial => partial_for_hit(hit.class), :locals => { :hit => hit } %>
+ <%= render :partial => partial_for_class(hit.class), :locals => { :hit => hit } %>
<%= _('Relevance: %d%%') % relevance_for(hit) %>
diff --git a/app/views/search/tag.rhtml b/app/views/search/tag.rhtml
index c62c41d..717de72 100644
--- a/app/views/search/tag.rhtml
+++ b/app/views/search/tag.rhtml
@@ -8,7 +8,7 @@
<% @tagged.each do |hit| %>
- <%= render :partial => partial_for_hit(hit.class), :locals => { :hit => hit } %>
+ <%= render :partial => partial_for_class(hit.class), :locals => { :hit => hit } %>
<% end %>
diff --git a/test/unit/application_helper_test.rb b/test/unit/application_helper_test.rb
index df74ff0..1405340 100644
--- a/test/unit/application_helper_test.rb
+++ b/test/unit/application_helper_test.rb
@@ -4,8 +4,16 @@ class ApplicationHelperTest < Test::Unit::TestCase
include ApplicationHelper
- should 'generate control panel buttons' do
+ should 'calculate correctly partial for object' do
+ self.stubs(:params).returns({:controller => 'test'})
+ File.expects(:exists?).with("#{RAILS_ROOT}/app/views/test/_float.rhtml").returns(false)
+ File.expects(:exists?).with("#{RAILS_ROOT}/app/views/test/_numeric.rhtml").returns(true).times(2)
+ File.expects(:exists?).with("#{RAILS_ROOT}/app/views/test/_runtime_error.rhtml").returns(true).at_least_once
+
+ assert_equal 'numeric', partial_for_class(Float)
+ assert_equal 'numeric', partial_for_class(Numeric)
+ assert_equal 'runtime_error', partial_for_class(RuntimeError)
end
end
--
libgit2 0.21.2