Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在RubyonRails内置的页面上过滤结果_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 如何在RubyonRails内置的页面上过滤结果

Ruby on rails 如何在RubyonRails内置的页面上过滤结果,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有一堆艺术品。我希望能够仅显示已售出的艺术品(这是我表格中的一列,:availability='Private collection')。我该怎么做?这就是我迄今为止所尝试的: 在artworks_controller.rb中创建“售出”操作: def index if params[:tag] @artworks = Artwork.tagged_with(params[:tag]) elsif params[:series] @artworks

我有一堆艺术品。我希望能够仅显示已售出的艺术品(这是我表格中的一列,:availability='Private collection')。我该怎么做?这就是我迄今为止所尝试的: 在artworks_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'
我知道我将艺术品标记为这些单独的选项,它们正确地显示在我的展示页面上(这是我的表格):

[‘可供购买’、‘私人收藏’、‘不可出售’],:as=>:单选按钮%>

所有这一切似乎并没有破坏任何东西,但也不允许我只看到那些在我到达时出售的艺术品。我做错了什么?

这当前路由到文章索引:

get 'sold' => 'artworks#index', :as => 'sold'
因此,它在索引操作中使用您的查询,并且在没有参数的情况下,它获取所有参数。因此,您需要将其发送到销售操作:

get 'sold' => 'artworks#sold', :as => 'sold'
然后在控制器中,您可以告诉rails呈现索引视图

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

它将使用索引视图,但与来自销售操作的查询一起使用。

这确实很有帮助。非常感谢。
def sold
  @artworks = Artwork.where(availability: 'Private collection')
  render :index
end