Better use of Rails' tag helpers. Added list view.

This commit is contained in:
Christoph Haas 2013-08-25 23:38:50 +02:00
parent 869b87bc7b
commit e3e1871a8f
4 changed files with 63 additions and 24 deletions

View file

@ -3,16 +3,22 @@ class PackagesController < ApplicationController
@packages = Package.includes(:screenshots)
if params[:search]
@packages = @packages.text_search(params[:search])
@packages = @packages.text_search(params[:search][:query])
end
if params[:with_screenshots]=='yes'
# Limit the packages to those that have approved screenshots.
# Also eager-load the screenshots.
@packages = @packages.where("screenshots.approved"=>true)
end
#if params[:with_screenshots]=='yes'
# # Limit the packages to those that have approved screenshots.
# # Also eager-load the screenshots.
# @packages = @packages.where("screenshots.approved"=>true)
#end
@packages = @packages.page(params[:page]).per(12)
if params[:search][:display]=='list'
@view='list'
else
@view='grid'
end
end
def with_screenshots

View file

@ -1,4 +1,4 @@
<% # Show search results %>
<% # Show search results - grid style %>
<% if @packages.length>0 %>
<% @packages.each do |package| %>

View file

@ -0,0 +1,34 @@
<% # Show search results - list style %>
<% if @packages.length>0 %>
<% @packages.each do |package| %>
<div class="row">
<div class="col-md-3">
<% if package.screenshots.length>0 %>
<% screenshot = package.screenshots.first %>
<div style="text-align: center; height: 120px">
<%= link_to image_tag(screenshot.image_url('small')),
screenshot.image_url('large'),
:class => 'fancybox thumbnail',
:title => (
"#{package.description}" +
(screenshot.description.blank? ? '' : " (#{screenshot.description})")
)
%>
</div>
<% else %>
<div style="text-align: center; height: 120px">
<%= link_to image_tag("/thumbnail-404.png"), "/path/to/upload/package" %>
</div>
<h3><%= package.name %></h3>
<p><%= package.description %></p>
<% end %>
</div>
<div class="col-md-9">
descr
</div>
</div>
<% end %>
<% end %>

View file

@ -23,28 +23,23 @@
-->
<%= form_tag(url_for, method: "get", class: "navbar-form navbar-left form-search", role: "search") do %>
<div class="form-group">
<input type="text" name="search" class="form-control" placeholder="Search..." value="<%= params[:search] %>">
<%= search_field_tag('search[query]', nil, placeholder:'Search...', size:30, maxlength:200, class:'form-control') %>
</div>
<button type="submit" class="btn btn-default">Submit</button>
<div class="btn-group" data-toggle="buttons">
<%= label('search', 'display', class: 'btn btn-default') do %>
<!-- Button group for grid/list view -->
<div class="btn-group" data-toggle="buttons">
<span class="btn btn-default <%= @view=='grid' ? 'active' : '' %>">
<%= radio_button('search', 'display', 'grid') %>
<span class="glyphicon glyphicon-th">
<% end %>
<%= label('search', 'display', class: 'btn btn-default') do %>
<span class="glyphicon glyphicon-th"></span>
</span>
<span class="btn btn-default <%= @view=='list' ? 'active' : '' %>">
<%= radio_button('search', 'display', 'list') %>
<span class="glyphicon glyphicon-th-list">
<% end %>
<label class="btn btn-default active">
<input type="radio" name="display" value="grid"><span class="glyphicon glyphicon-th"></span>
</label>
<label class="btn btn-default">
<input type="radio" name="display" value="list"><span class="glyphicon glyphicon-th-list"></span>
</label>
</div>
<span class="glyphicon glyphicon-th"></span>
</span>
</div>
<% end %>
<% end %> <!-- /form -->
<div class="navbar-nav">
<%= paginate @packages, :window => 2 %>
@ -57,5 +52,9 @@
</nav>
<div class="container container-main">
<%= render "packages_search_results", object: @packages %>
<% if @view=='grid' %>
<%= render "packages_search_results_grid", object: @packages %>
<% else %>
<%= render "packages_search_results_list", object: @packages %>
<% end %>
</div>