Как найти работу, которая принадлежит текущему пользователю и отобразить их в Rails? - PullRequest
0 голосов
/ 17 февраля 2019

Я хочу создать страницу 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 голосов
/ 18 февраля 2019

Я исправил это!Проблема была в том, что я (полный идиот) забыл определить панель управления в контроллере.В любом случае, спасибо за вашу помощь!Хорошего дня!

def dashboard
 @jobs = Job.all.order("created_at desc")
end
0 голосов
/ 17 февраля 2019

Там будет несколько способов ответить на это, ниже простое решение.Обновите это согласно вашему требованию.Обновите ваши миграции в случае базы данных SQL для таблицы пользователей и заданий, чтобы иметь дополнительные атрибуты.

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 %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...