如何找到属于当前用户的作业并将其显示在Rails中?

时间:2019-02-17 09:05:03

标签: ruby-on-rails

我想构建一个dashboard.html.erb页面,其中仅显示当前用户发布的作业。 到目前为止,这是我的代码:

<% @jobs.each do |job| %>
<% if job_author(job) %>

<h3 class="title is-4 index-title"><%= link_to job.title, job %></h3>

<% end %>
<% end %>

有什么建议吗?谢谢 更新:

工作模式:

class Job < ActiveRecord::Base
    mount_uploader :avatar, AvatarUploader

    def self.search(search)
        if search
            where(['title LIKE ? or description LIKE ?', "%#{search}%", "%#{search}%"])
        else
            all
        end
    end
end

用户模型:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  belongs_to :user
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
  has_many :jobs
end

2 个答案:

答案 0 :(得分:0)

有多种解决方法,下面是简单的解决方案。根据您的要求进行更新。 对于用户和作业表,在使用SQL Db的情况下更新您的迁移,使其具有其他属性。

class User
  has_many :jobs
end

class Job
  belongs_to :User
  #user_id should be present in db
end

说您当前登录的用户位于@user对象中。要获取用户发布的所有作业,请使用以下代码(验证语法)

@jobs = @user.jobs 

<% @jobs.each do |job| %>
  <h3 class="title is-4 index-title"><%= link_to job.title, job %></h3>
<% end %>

答案 1 :(得分:0)

我修复了!问题是我(一个完整的白痴)忘记了定义控制器中的仪表板。无论如何,谢谢您的帮助!祝你有美好的一天!

def dashboard
 @jobs = Job.all.order("created_at desc")
end