2014-04-17 48 views
3

你好,我通过内部连接获得重复的数据行,并且我用OR条件编写内部连接。ROR内部连接给出重复值

控制器userscontroller.rb

@users = User.search(params[:search]) 
@users = User.joins([:requests]).where("name LIKE ? OR destination LIKE ?","#{params[:search]}%", "#{params[:search]}%") 

查看搜索/ index.html.haml

%aside.span6 
    = form_tag(:users, method: "get") do 
    = text_field_tag "search", params[:search], placeholder: "Enter Name" 
    %br/ 
    = submit_tag "Search", name: nil, class: "btn-custom-darken" 
    %br/ 
    %br/ 
- @users.each do |user| 
= render user 
= will_paginate @users 

查看用户/ index.html.haml

%div{align: "center"} 
%b List of Users 
- if current_user != (@user) 
%ol.microposts 
- @users.each do |user| 
= render user 

问题是在搜索后打印为输出的重复数据。如果用户发布了3个请求,则用户将被打印为输出3次。因此用户的图像被打印3次,重复的请求数据。 在此先感谢。

+0

向我们展示您的示例输出。 – Pavan

+0

[示例输出图像](http://i.stack.imgur.com/i2BD2.png)@Pavan –

+0

其中哪一个是重复数据? – Pavan

回答

1

要从联接中获取唯一值,只需将.uniq函数添加到呼叫中即可。而且,当重复使用一个单一输入进行多个查询时,您可以使用ruby key:value pair语法。

@users = User.joins([:requests]) 
      .where("name LIKE :search OR 
        destination LIKE :search", 
        {search: params[:search]}) 
      .uniq 
+0

我只是在最后写uniq。感谢@约翰 –