你好我通过内连接得到重复的数据行。我用OR条件写内连接。
控制器 userscontroller.rb
@users = User.search(params[:search])
@users = User.joins([:requests]).where("name LIKE ? OR destination LIKE ?","#{params[:search]}%", "#{params[:search]}%")
查看 searching / 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
查看 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 :(得分:1)
要从联接中获取唯一值,只需将.uniq
函数添加到呼叫中即可。而且,当重复使用单个输入进行多个查询时,您可以使用ruby key:value pair语法。
@users = User.joins([:requests])
.where("name LIKE :search OR
destination LIKE :search",
{search: params[:search]})
.uniq