【发布时间】:2019-10-11 11:16:12
【问题描述】:
我的 rails 应用程序中有一个 html 表格,用于支付所有费用。费用是一个枚举,可以采用“教育”、“啤酒”、“bliblablub”等值。
我希望能够根据这些枚举值过滤我的 html 表。我在表格的一侧有用户可以点击的链接。现在我希望表格根据链接过滤结果。
现在,我认为示波器是解决问题的方法,但我很难理解它们的真正工作原理。我创建了一个这样的范围只是为了理解它:
scope :find_category, -> {Expense.where(category:"education")}
在 Rails 控制台中这是可行的,当我调用 find_category 方法时,它会为我提供教育实例。
我认为动态范围应该是这样的:
scope :find_category, -> (category) {Expense.where(category:category)}
到目前为止一切顺利。现在,我并没有真正得到的是我现在如何在我的控制器和视图中使用过滤后的结果,也就是说点击链接时如何过滤它。
我试过这个:
控制器(试图得到我的查询结果)
def find_category
@expense = Expense.find_category
render action: :index
end
然后为 find_categories 放一条路线:
resources :expenses, path: 'expenses' do
collection do
get :find_category
end
end
并在索引中放一个链接:
<%= link_to 'education', {controller: 'expenses', action: 'index', :find_category => 'education'} %>
我知道这不是真正的方式。点击链接虽然它给了我expenses?find_category=education。然而什么都没有改变。所以我很难找到正确的方法来做到这一点。当然,在不重新加载页面的情况下这样做也很棒,所以我想我必须使用 AJAX 调用和 JavaScript。但是页面重新加载也会对我有很大帮助。
【问题讨论】:
标签: ruby-on-rails ajax filtering scopes