Rails - 使用ransack通过链接查询数据库

时间:2015-01-15 22:36:09

标签: ruby-on-rails ruby activerecord ransack querying

我最近发现了红宝石宝石,ransack

Ransack可用于通过表单查询ActiveRecord数据库。

我想做的是通过点击链接查询ActiveRecord。

让我们说我正在写一个体育博客并对文章进行分类。

让我们说我的类别是足球,篮球,棒球和曲棍球。

我可以通过编写此代码找到与篮球有关的文章

<%= search_form_for @q do |f| %>

  <%= f.label :category_eq, "Category" %>
  <%= f.search_field :category_eq %></br></br>

  <%= f.submit "Search", :class => 'submit-btn' %>

<% end %>

输入basketball并按提交。

然后我会看到一份与篮球有关的文章清单。

我想要做的是看同样的事情,只需点击一个链接,就可以查询ActiveRecord。

我知道你可以通过创建一堆不同的路径,一堆不同的控制器动作来实现这一点,并在其中查询ActiveRecord,如下所示

<% Article.where(category: 'basketball').each do |article| %>

  <%= article.title %>
  <%= article.author %>
  <%= article.content %>
  <%= article.category %>

<% end %>

这似乎是一项额外的工作,而且必须采用更简单的方式

1 个答案:

答案 0 :(得分:4)

您不需要创建任何新路线。只需使用相应的q参数创建链接:

<%= link_to 'Basketball articles', q: {category_eq: 'Basketball'} %>

上面的链接将转到当前的URL,但是带有Basketball查询参数。您还可以将q参数传递给路径或网址助手:

<%= link_to 'Basketball articles', articles_path(q: {category_eq: 'Basketball'}) %>