Rails 管理面板:用户列表显示错误

问题描述 投票:0回答:3

我目前正在尝试通过使用管理员和用户创建一个网站来习惯 Rails。但是,当在管理仪表板中显示用户列表时,由于某些原因,会出现这些行:

[#[电子邮件受保护]",password_digest:[已过滤], 创建时间:“2022-08-09 03:47:52.264555000 +0000”,更新时间: “2022-08-09 03:47:52.264555000 +0000”,名字:nil,姓氏:nil, last_change: nil>, #[电子邮件受保护]", 密码摘要:[已过滤],创建时间:“2022-08-19 08:32:37.086901000 +0000",更新时间:"2022-08-19 08:32:37.086901000 +0000",名字:nil,姓氏:nil,last_change:nil>,#[电子邮件受保护]",password_digest:[已过滤],created_at: “2022-08-19 08:32:58.497826000 +0000”,更新时间:“2022-08-19 08:32:58.497826000 +0000",名字:nil,姓氏:nil,last_change: 无>]

这是我用来显示用户列表的代码:

<%= @users.each do |hello| %>
 <%= form_with model: @user, url: '/admin/users/delete' do |f| %>
    <%= hello.email %>
    <%= hidden_field_tag( :id, hello.id) %>
    <%=f.submit "Delete"%>
  <%end%>
  <hr>
<%end%>

这是我得到的显示屏图片: 图片

如果您能提供帮助,我将不胜感激。谢谢!

ruby-on-rails web web-frontend
3个回答
0
投票

<%= %>
语法(注意
=
)执行ruby代码并将结果打印到您的html中。

这意味着,除了循环之外,

<%= @users.each do |hello| %>
还将把
@users
的结果打印到您的html文件中,这就是您看到的奇怪文本。

要解决这个问题,只需更改

<%= @users.each do |hello| %>

<% @users.each do |hello| %>

(因此没有

=
符号)。这仍然会执行 ruby 代码,但不会将其返回值传递给您的 html。


0
投票

更换即可

<%= @users.each do |hello| %>

<% @users.each do |hello| %>

0
投票

这里的问题是

<%= @users.each do |hello| %>
正在打印每个方法的返回值,这是原始的
@users
数组本身。这就是为什么您看到数组打印为
[#<User id: ...>]
。要解决此问题,请将
<%= @users.each do |hello| %>
更改为
<% @users.each do |hello| %>

使用

<%= ... %>
会将其中代码的结果输出到视图。由于 .each 返回数组本身,因此将
<%= ... %>
@users.each
一起使用会导致打印整个用户数组。通过使用
<% ... %>
,我们可以防止 Rails 尝试渲染每个的输出,而只是按预期迭代用户。

© www.soinside.com 2019 - 2024. All rights reserved.