Ruby on rails Can';t让这个IF语句正常工作-Rails
我试图使它不会显示页面,除非该资产属于某个用户项目(以阻止其他人查看任何内容)。由于某些原因,我无法让它工作,因为它当前正在渲染else部分,而它应该在渲染资源Ruby on rails Can';t让这个IF语句正常工作-Rails,ruby-on-rails,Ruby On Rails,我试图使它不会显示页面,除非该资产属于某个用户项目(以阻止其他人查看任何内容)。由于某些原因,我无法让它工作,因为它当前正在渲染else部分,而它应该在渲染资源 def show @website = Asset.find(params[:id]) ##Add if statement so only current users can view if @website.project_id == current_user.projects.all.e
def show
@website = Asset.find(params[:id])
##Add if statement so only current users can view
if @website.project_id == current_user.projects.all.each { |s| s.id}
@website
else
render(:action => 'blank')
end
end
你知道我哪里出了问题吗?试试使用
def show
@website = Asset.find(params[:id])
if current_user.projects.pluck(:id).include?(@website.project_id)
@website
else
render(:action => 'blank')
end
end
这比您试图实现的目标优化得多
错误是current_user.projects.all.each{s|s.id}
将返回项目数组。因此,您将永远无法将项目id与数组进行比较
相反,您需要一个项目id
数组,然后查找所需的项目id
是否包含在该数组中
编辑
进一步说,我们还可以使用
def show
@website = Asset.find(params[:id])
if current_user.projects.find_by_id(@website.project_id).present?
@website
else
render(:action => 'blank')
end
end
通过这种方式,我们的期望结果直接从数据库中获取,我们不需要进行太多的比较或评估 尝试使用
def show
@website = Asset.find(params[:id])
if current_user.projects.pluck(:id).include?(@website.project_id)
@website
else
render(:action => 'blank')
end
end
这比您试图实现的目标优化得多
错误是current_user.projects.all.each{s|s.id}
将返回项目数组。因此,您将永远无法将项目id与数组进行比较
相反,您需要一个项目id
数组,然后查找所需的项目id
是否包含在该数组中
编辑
进一步说,我们还可以使用
def show
@website = Asset.find(params[:id])
if current_user.projects.find_by_id(@website.project_id).present?
@website
else
render(:action => 'blank')
end
end
通过这种方式,我们的期望结果直接从数据库中获取,我们不需要进行太多的比较或评估 尝试使用
def show
@website = Asset.find(params[:id])
if current_user.projects.pluck(:id).include?(@website.project_id)
@website
else
render(:action => 'blank')
end
end
这比您试图实现的目标优化得多
错误是current_user.projects.all.each{s|s.id}
将返回项目数组。因此,您将永远无法将项目id与数组进行比较
相反,您需要一个项目id
数组,然后查找所需的项目id
是否包含在该数组中
编辑
进一步说,我们还可以使用
def show
@website = Asset.find(params[:id])
if current_user.projects.find_by_id(@website.project_id).present?
@website
else
render(:action => 'blank')
end
end
通过这种方式,我们的期望结果直接从数据库中获取,我们不需要进行太多的比较或评估 尝试使用
def show
@website = Asset.find(params[:id])
if current_user.projects.pluck(:id).include?(@website.project_id)
@website
else
render(:action => 'blank')
end
end
这比您试图实现的目标优化得多
错误是current_user.projects.all.each{s|s.id}
将返回项目数组。因此,您将永远无法将项目id与数组进行比较
相反,您需要一个项目id
数组,然后查找所需的项目id
是否包含在该数组中
编辑
进一步说,我们还可以使用
def show
@website = Asset.find(params[:id])
if current_user.projects.find_by_id(@website.project_id).present?
@website
else
render(:action => 'blank')
end
end
通过这种方式,我们的期望结果直接从数据库中获取,我们不需要进行太多的比较或评估 如果“一个id”=“某个数组”?那看起来是不是。。错了吗?另外,请注意,它返回原始数组对象,而不是
#map
,并且通常仅用于副作用。如果“an id”=“some array”?那看起来是不是。。错了吗?另外,请注意,它返回原始数组对象,而不是#map
,并且通常仅用于副作用。如果“an id”=“some array”?那看起来是不是。。错了吗?另外,请注意,它返回原始数组对象,而不是#map
,并且通常仅用于副作用。如果“an id”=“some array”?那看起来是不是。。错了吗?另外,请注意,返回原始数组对象,而不是#map
,并且通常仅用于副作用。#pull
(以及中间可枚举项)可以用Yes跳过。我们可以。但使用勇气比任何其他方法都更有效。对于任何第一次,我们都将获取所有记录,然后循环所有记录。Pull将仅从数据库返回id。谢谢你的回答!工作得很有魅力。我编辑它只是为了再次包含第一行,因为它给了我一个没有它的错误。但再次感谢#pulk
(以及中间可枚举项)可以用Yes跳过。我们可以。但使用勇气比任何其他方法都更有效。对于任何第一次,我们都将获取所有记录,然后循环所有记录。Pull将仅从数据库返回id。谢谢你的回答!工作得很有魅力。我编辑它只是为了再次包含第一行,因为它给了我一个没有它的错误。但再次感谢#pulk
(以及中间可枚举项)可以用Yes跳过。我们可以。但使用勇气比任何其他方法都更有效。对于任何第一次,我们都将获取所有记录,然后循环所有记录。Pull将仅从数据库返回id。谢谢你的回答!工作得很有魅力。我编辑它只是为了再次包含第一行,因为它给了我一个没有它的错误。但再次感谢#pulk
(以及中间可枚举项)可以用Yes跳过。我们可以。但使用勇气比任何其他方法都更有效。对于任何第一次,我们都将获取所有记录,然后循环所有记录。Pull将仅从数据库返回id。谢谢你的回答!工作得很有魅力。我编辑它只是为了再次包含第一行,因为它给了我一个没有它的错误。但再次感谢!