Ransack不工作(没有错误,只是没有运作)

时间:2014-06-26 22:35:23

标签: ruby-on-rails ruby-on-rails-4 ransack

如果有人能看到我做错了什么就会喜欢它。遵循文档:https://github.com/activerecord-hackery/ransack

我的模型定义了Signup has_many Inventories

控制器代码:

def index
  @q = Inventory.search(params[:q])
  @inventories = @q.result.includes(:signup)
end

查看代码:

<%= search_form_for @q, url: url_for(controller: 'inventories', action: 'index') do |f| %>
  <%= f.label :item_name_cont %>
  <%= f.search_field :item_name_cont %>
  <%= f.label :signup_email_cont %>
  <%= f.search_field :signup_email_cont %>
  <%= f.submit %>
<% end %>

<table>
  <thead>
    <tr>
      <th><%= sort_link(@q, :item_name, "Item", default_order: :desc) %></th>
      <th><%= sort_link(@q, 'signups.email', "Email") %></th>
      <th>Action</th>
      <th colspan="5"></th>
    </tr>
  </thead>
  <tbody>
    <% Inventory.all.each do |inventory| %>
      <tr>
        <td><%= inventory.item_name %></td>
        <td><%= inventory.signup.email %> %></td>
      </tr>
  </tbody>
</table>

另外,如果它有用,如果我在搜索表单中删除url:规范,则会收到错误消息:No route matches [GET] "/inventories/search"

3 个答案:

答案 0 :(得分:0)

改变这一点;

def index
  @q = Inventory.search(params[:q])
  @inventories = @q.result.includes(:signup)
end

def index
  @q = Inventory.ransack(params[:q])
  @inventories = @q.result.includes(:signup)
end

答案 1 :(得分:0)

更好的选择

请确保您发布的观看代码位于views/inventories/index.html.erb文件中,并将Inventory.all.each更改为@inventories.each。然后,您就可以访问http://localhost:3000/inventories的搜索表单。

根据您提到的错误,您似乎是在/inventories/search页面上执行此操作。如果您想坚持使用该URL,请将您的index方法代码移动到控制器中的search方法中(如下所示),并在路径文件中添加带有GET的search路由。

def search
  @q = Inventory.search(params[:q])
  @inventories = @q.result.includes(:signup)
end

答案 2 :(得分:0)

我想我陷入了同样的境地。它可能正在发挥作用,这很难识别。你得到任何回报吗?可能所有的回报?如果是这种情况,则可能是默认搜索的问题。如果您刚刚放置Inventory.all尝试,默认搜索会返回您所期望的所有内容。

Inventory.ransack(name_eq: 'potatos').result

这也可行

Inventory.ransack(special_potato_eq: 'potatoes').result

这会将回复限制为Inventory.potatoInventory.special_potato

的完全匹配

这是对我有用的代码的确切位置

@q = User.ransack(email_eq: params[:q][:email])

查看其他搜索选项的参考链接。

参考:https://github.com/activerecord-hackery/ransack/wiki/basic-searching