Ruby on rails 4 当提供类别\ U id时,筛选记录会导致未定义的方法
我的应用程序中的过滤功能有问题。请在此输入: 搜索工作正常,但当我尝试按类别(左面板)进行筛选时,会出现错误: 未定义的方法'category_id' 更重要的是,如果您在category\u的链接中更改category\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
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
说实话,我不知道该怎么做,你能给我一些建议吗?或者如果我用搜索宝石会更好?