Rails - 如何查找单个记录(用户名)在主页中向任何访问者显示它
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rails - 如何查找单个记录(用户名)在主页中向任何访问者显示它相关的知识,希望对你有一定的参考价值。
在使用BS4和使用Devise的rails 5.1.6项目中,我试图解决以下问题。
我试图在主页中显示拥有项目的用户的名称。这不起作用。它返回一个名称错误:未定义的局部变量或方法`user'
控制器如下:
项目管理员:
def create
@project = current_user.projects.build(project_params)
end
主页控制器显示如下:
def home
@projects = Project.where(publish: true).limit(8)
end
如果我试图添加到页面控制器@users = User.find(params [:user_id])它不起作用。 (找不到记录/找不到'id'='的用户
(截断的)视图如下:
<div class="card-row border-top d-flex">
<div class="card2-post__author d-flex">
<img class="card2-project-author-avatar"
<%= image_tag avatar_url(@user), class: "avatar-small" %></img>
<div class="d-flex flex-column justify-content-center ml-3">
<span class="card2-project-author-name"><%= user.fullname %></span>
</div>
</div>
该视图是部分的,在两个实例中呈现:
a)在用户仪表板下:
<%= render partial: "projects/projects_list", locals: {user: current_user, projects: @projects} %>
用户的控制器显示:
def show
@user = User.find(params[:id])
@projects = @user.projects
end
这很有效。
b)第二个
<%= render partial: "projects/projects_list", locals: {user: current_user, projects: @projects} %>
无论我尝试什么,这个都不起作用。我感觉到在哪里寻找,但我似乎陷入了没有想法,并希望得到帮助,这将指向我解决方案或解决方案的方法。提前致谢。
答案
第一个错误:
undefined local variable or method `user'
可能是由于你的部分缺少@
造成的:
<span class="card2-project-author-name"><%= user.fullname %></span>
一旦用户使用Devise登录到应用程序,您就可以通过调用current_user
方法访问该用户。无需再次从数据库中获取用户(通过调用User.find...
)。您可以将用户对象保存在实例变量中,如下所示:
@user = current_user
另一答案
我通过在create controller中添加:fullname to params解决了这个问题。以下内容指导我:Retrieve Username from User ID
def create
...
@project = current_user.projects.build(project_params)
...
end
private
def project_params
params.require(:project).permit(...:fullname)
end
谢谢
以上是关于Rails - 如何查找单个记录(用户名)在主页中向任何访问者显示它的主要内容,如果未能解决你的问题,请参考以下文章