如何仅显示用户的帖子。不是别人
How to display a user's posts only. Not others
此应用程序适用于导师。当导师完成 class 时,他们会填写 class_report。然后索引页面应该只显示他们的 class_reports。
这是我的问题:我创建了两个帐户,test1 和 test2。 test1 可以看到 test1 和 test2 的 class_reports 但 test2 看不到任何 posts,甚至看不到他们自己的。它甚至说 post 是在 test2 创建它时由 test1 创建的。
我很确定索引部分有问题或创建了 class_reports_controller 的一部分,但我不确定。我认为它也可以出现在模型中。
class_reports_controller.rb
class ClassReportsController < ApplicationController
before_action :require_login
before_action :set_class_report, only: [:show, :edit, :update, :destroy]
# GET /class_reports
# GET /class_reports.json
def index
@class_report = current_user.class_reports
end
def create
@class_report = ClassReport.new(class_report_params)
@class_report.user = User.first
respond_to do |format|
if @class_report.save
format.html { redirect_to @class_report, notice: 'Class report was successfully created.' }
format.json { render :show, status: :created, location: @class_report }
else
format.html { render :new }
format.json { render json: @class_report.errors, status: :unprocessable_entity }
end
end
end
型号:
class_report.rb
class ClassReport < ApplicationRecord
belongs_to :user
end
user.rb
class User < ApplicationRecord
include Clearance::User
has_many :class_reports
before_save { self.email = email.downcase }
end
您的 create
操作有问题,在这一行:
@class_report.user = User.first
并将其更改为:
@class_report.user = current_user
所以第一行的问题是所有报告都已创建并且 link 给第一个用户(总是),这就是其他用户没有报告的原因。通过更改到第二行,我们创建了一个报告并 link 给登录用户 (current_user),因此该报告被创建并分配给任何登录并创建报告的人。
希望对您有所帮助。
此应用程序适用于导师。当导师完成 class 时,他们会填写 class_report。然后索引页面应该只显示他们的 class_reports。 这是我的问题:我创建了两个帐户,test1 和 test2。 test1 可以看到 test1 和 test2 的 class_reports 但 test2 看不到任何 posts,甚至看不到他们自己的。它甚至说 post 是在 test2 创建它时由 test1 创建的。
我很确定索引部分有问题或创建了 class_reports_controller 的一部分,但我不确定。我认为它也可以出现在模型中。
class_reports_controller.rb
class ClassReportsController < ApplicationController
before_action :require_login
before_action :set_class_report, only: [:show, :edit, :update, :destroy]
# GET /class_reports
# GET /class_reports.json
def index
@class_report = current_user.class_reports
end
def create
@class_report = ClassReport.new(class_report_params)
@class_report.user = User.first
respond_to do |format|
if @class_report.save
format.html { redirect_to @class_report, notice: 'Class report was successfully created.' }
format.json { render :show, status: :created, location: @class_report }
else
format.html { render :new }
format.json { render json: @class_report.errors, status: :unprocessable_entity }
end
end
end
型号:
class_report.rb
class ClassReport < ApplicationRecord
belongs_to :user
end
user.rb
class User < ApplicationRecord
include Clearance::User
has_many :class_reports
before_save { self.email = email.downcase }
end
您的 create
操作有问题,在这一行:
@class_report.user = User.first
并将其更改为:
@class_report.user = current_user
所以第一行的问题是所有报告都已创建并且 link 给第一个用户(总是),这就是其他用户没有报告的原因。通过更改到第二行,我们创建了一个报告并 link 给登录用户 (current_user),因此该报告被创建并分配给任何登录并创建报告的人。
希望对您有所帮助。