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 4 当提供类别\ U id时,筛选记录会导致未定义的方法_Ruby On Rails 4_Filtering - Fatal编程技术网

Ruby on rails 4 当提供类别\ U id时,筛选记录会导致未定义的方法

Ruby on rails 4 当提供类别\ U id时,筛选记录会导致未定义的方法,ruby-on-rails-4,filtering,Ruby On Rails 4,Filtering,我的应用程序中的过滤功能有问题。请在此输入: 搜索工作正常,但当我尝试按类别(左面板)进行筛选时,会出现错误: 未定义的方法'category_id' 更重要的是,如果您在category\u的链接中更改category\u id,那么错误就会消失(但过滤仍然不起作用)有人知道错误出现的原因吗? 代码如下: 类别模型 class Category < ActiveRecord::Base has_many :events end class Event < ActiveRec

我的应用程序中的过滤功能有问题。请在此输入:

搜索工作正常,但当我尝试按类别(左面板)进行筛选时,会出现错误:

未定义的方法'category_id'

更重要的是,如果您在category\u的链接中更改category\u id,那么错误就会消失(但过滤仍然不起作用)有人知道错误出现的原因吗?

代码如下:

类别模型

class Category < ActiveRecord::Base
  has_many :events
end
class Event < ActiveRecord::Base
  include Filterable
  belongs_to :city
  belongs_to :category
end
<div class="panel-body">
<ul>
  <% @categories.each do |category| %>
      <li><%= link_to category.name, events_path(
                              :search => params[:search],
                              :date => params[:date],
                              :category_id => category.id
                      )
      %></li>
  <% end %>
</ul>
</div>
过滤功能(来自):

类别面板

class Category < ActiveRecord::Base
  has_many :events
end
class Event < ActiveRecord::Base
  include Filterable
  belongs_to :city
  belongs_to :category
end
<div class="panel-body">
<ul>
  <% @categories.each do |category| %>
      <li><%= link_to category.name, events_path(
                              :search => params[:search],
                              :date => params[:date],
                              :category_id => category.id
                      )
      %></li>
  <% end %>
</ul>
</div>

  • 参数[:搜索], :date=>params[:date], :category_id=>category.id ) %>
您的搜索尝试:

@city.events.category_id
这不管用。对于其他参数(如成本),您会得到相同的结果。您的目标是使用以下内容:

@city.events.where(category_id: category_id)
筛选器不适用于关系

最好的

编辑:

解决问题的一种方法:

class City < ActiveRecord::Base
  has_many :events do
    def filter(key,value)                                                       
      where("#{key}=?",value)                                                   
    end
  end

  def filtered_events params                                                    
    result = events                                             
    sliced_params(params).each do |key, value|                                  
      result = result.filter(key,value)                                         
    end                                                                         
    result                                                                      
  end                                                                           

private                                                                       

  def sliced_params params                                                      
    params.slice(:category_id, :start_date, :cost)                              
  end 
end

说实话,我不知道该怎么做,你能给我一些建议吗?或者如果我用搜索宝石会更好?