ruby-on-rails - Rails - 如何查找单个记录(用户名)在主页中显示给任何访问者
问题描述
在使用 BS4 并使用 Devise 的 rails 5.1.6 项目上,我正在尝试解决以下问题。
我正在尝试在主页中显示拥有项目的用户的名称。这不起作用。它返回一个名称错误:未定义的局部变量或方法“用户”
控制器如下:
项目负责人:
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} %>
无论我尝试什么,这个都行不通。我对在哪里寻找有一种感觉,但我似乎没有想法,并且希望能帮助我找到解决方案或解决这个问题的方法。提前致谢。
解决方案
我通过在创建控制器的参数中添加 :fullname 解决了这个问题。以下指导我完成了: 从用户 ID 中检索用户名
def create
...
@project = current_user.projects.build(project_params)
...
end
private
def project_params
params.require(:project).permit(...:fullname)
end
谢谢
推荐阅读
- java - 理解 JSON 数组请求有问题?
- netlogo - 同一品种的两个特工
- php - 什么 PHP 代码访问 Iterator 接口相当于一个 foreach 循环?
- mysql - Galera 集群不工作使用 wsrep_sst_method=xtrabackup (-v2) 直到第一次使用 rsync
- php - 无法在具有 laravel 和 Angular 的站点上的 api 请求中动态设置 cookie
- html - 下面的代码中的边距是如何工作的?
- c++ - 如何让我的程序在 C++ 中接受来自用户的不同输入?
- firebase - 在快照的数据上调用了 getter 'length'
- android - .append 在 kotlin 中显示预期结果
- c# - Naudio Read 在读取 mp4 时会引发 InvalidCast 异常,但并非总是如此。为什么?