在我的搜索表单中访问其他模型的属性

时间:2017-03-09 16:44:46

标签: ruby-on-rails model attributes

我是一个新手,并为此苦苦挣扎:

我有两个型号:User&工作,关系如下:

class User < ApplicationRecord
  has_many :jobs, dependent: :destroy
end

class Job < ApplicationRecord
  belongs_to :user
end

在我的工作索引视图中,我有一个搜索表单,我想按地址找到工作(即:查找用户的地址),

<%= form_tag(jobs_path, method: :get) do %>
  <%= text_field_tag :address, params[:address] %>
  <%= submit_tag 'Search', class:'btn btn-primary' %>
<% end %>

是用户的一个属性:

create_table "users", force: :cascade do |t|
  t.string   "name"
  t.string   "email"
  t.datetime "created_at",                        null: false
  t.datetime "updated_at",                        null: false
  t.string   "password_digest"
  t.string   "remember_digest"
  t.boolean  "admin",             default: false
  t.string   "activation_digest"
  t.boolean  "activated",         default: false
  t.datetime "activated_at"
  t.string   "reset_digest"
  t.datetime "reset_sent_at"
  t.float    "latitude"
  t.float    "longitude"
  ***t.string   "address"***
  t.string   "phone"
  t.index ["email"], name: "index_users_on_email", unique: true
end

在我的JobsController中,如何指向用户的属性?即:用户的地址?这是我现在的索引函数:

def index
  @jobs = if params[:address]
    Job.where('address LIKE ?', "%#{params[:address]}%").paginate(page: params[:page], per_page: 20)
  else
    @jobs = Job.paginate(:page => params[:page], per_page: 4)
  end
end

但显然我在搜索时没有得到任何东西。

提前感谢您的指导意见。鲁道夫

1 个答案:

答案 0 :(得分:0)

您应该执行以下操作:

Job.joins(:user).where(users: { address: address }) }