2015-03-02 22 views
1

我有一堆艺术品。我想只能展示出售的艺术品(这是我的表格中的一列,:availability ='私人收藏')。我将如何做到这一点?这是我到目前为止已经试过: 创建于artworks_controller.rb一个“卖”的动作:如何在Ruby on Rails中构建的页面上过滤结果

def index 
    if params[:tag] 
     @artworks = Artwork.tagged_with(params[:tag]) 
    elsif params[:series] 
     @artworks = Artwork.tagged_with(params[:series]) 
    elsif params[:availability] 
     @artworks = Artwork.where(availability: 'Private collection') 
    else 
     @artworks = Artwork.all 
    end 
    end 

    def sold 
    @artworks = Artwork.where(availability: 'Private collection') 
    end 

的routes.rb:

get 'sold' => 'artworks#index', :as => 'sold' 

我知道我有标记为这些艺术品各选项,他们正在正确地出现在我的节目页面上(这是我的表单):

<%= f.input :availability, :collection => ['Available for purchase','Private collection','Not for sale'], :as => :radio_buttons %> 

这一切似乎并没有打破任何东西,但它也不让我看到只有那些作品当我到达http://localhost:3000/sold时销售。我究竟做错了什么?

回答

2

目前这条路由文章指数:

get 'sold' => 'artworks#index', :as => 'sold' 

,因为它是用在索引操作查询,并没有PARAMS它得到所有这些的结果。所以,你需要路由到出售行动:

get 'sold' => 'artworks#sold', :as => 'sold' 

然后在你的控制器,你可以告诉轨呈现索引视图

def sold 
    @artworks = Artwork.where(availability: 'Private collection') 
    render :index 
end 

将使用索引视图,但是从查询卖出的行动。

+0

这非常有帮助。谢谢! – 2015-03-03 04:28:44