我有一堆艺术品。我希望只能展示出售的那些艺术品(这是我表中的一栏,:可用性='私人收藏')。我该怎么做?这是我到目前为止所尝试的: 创建'已售出'在artwork_controller.rb中的操作:
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时出售的艺术品。我做错了什么?
答案 0 :(得分:2)
目前路由到文章索引:
get 'sold' => 'artworks#index', :as => 'sold'
因此,它在索引操作中使用您的查询,并且没有params它会获得所有这些。因此,您需要将其路由到已售出的操作:
get 'sold' => 'artworks#sold', :as => 'sold'
然后在您的控制器中,您可以告诉rails渲染索引视图
def sold
@artworks = Artwork.where(availability: 'Private collection')
render :index
end
将使用索引视图,但使用已售出操作的查询。