class ItemsController < ApplicationController before_filter :set_query def index if params.has_key?(:q) begin if params[:per_page] per_page = params[:per_page].to_i per_page = 50 if per_page && per_page > 50 else per_page = nil end @items = Item.search(@query, current_user).alphabetize.paginate :page => params[:page], :per_page => per_page assign_closeted! respond_to do |format| format.html { render } format.json { render :json => {:items => @items, :total_pages => @items.total_pages} } format.js { render :json => {:items => @items, :total_pages => @items.total_pages}, :callback => params[:callback] } end rescue Item::SearchError respond_to do |format| format.html { flash.now[:alert] = $!.message } format.json { render :json => {:error => $!.message} } format.js { render :json => {:error => $!.message}, :callback => params[:callback] } end end elsif params.has_key?(:ids) && params[:ids].is_a?(Array) @items = Item.find(params[:ids]) assign_closeted! respond_to do |format| format.json { render :json => @items } end else respond_to do |format| format.html { @newest_items = Item.newest.limit(18) current_user.assign_closeted_to_items!(@newest_items) if user_signed_in? } format.js { render :json => {:error => '$q required'}} end end end def show @item = Item.find params[:id] respond_to do |format| format.html do @trading_closet_hangers_by_owned = { true => @item.closet_hangers.owned_trading.newest.includes(:user), false => @item.closet_hangers.wanted_trading.newest.includes(:user) } if user_signed_in? @current_user_hangers = [true, false].map do |owned| hanger = current_user.closet_hangers.find_or_initialize_by_item_id_and_owned(@item.id, owned) hanger.quantity ||= 1 hanger end end end format.gif do expires_in 1.month redirect_to @item.thumbnail_url end end end def needed if params[:color] && params[:species] @pet_type = PetType.find_by_color_id_and_species_id( params[:color], params[:species] ) end unless @pet_type raise ActiveRecord::RecordNotFound, 'Pet type not found' end @items = @pet_type.needed_items.alphabetize assign_closeted! @pet_name = params[:name] render :layout => 'application' end protected def assign_closeted! current_user.assign_closeted_to_items!(@items) if user_signed_in? end def set_query @query = params[:q] end end