You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 5如何将模型值传递至AdminLTE仪表盘?

嘿,我来帮你搞定把User模型的用户总数传递到AdminLTE仪表盘的事儿!其实这事儿分两步走就行,后端传值+前端展示,我给你详细拆解下:

第一步:后端控制器传递模型数据到视图

假设你用的是Laravel(毕竟AdminLTE和Laravel搭配最多),首先在负责渲染仪表盘的控制器里(比如DashboardController),先引入User模型,然后统计用户总数,再把这个数据传到视图:

// app/Http/Controllers/DashboardController.php
namespace App\Http\Controllers;

use App\Models\User; // 别忘了引入User模型
use Illuminate\Http\Request;

class DashboardController extends Controller
{
    public function index()
    {
        // 从User模型获取总用户数
        $totalUsers = User::count();
        
        // 把数据传递到仪表盘视图
        return view('dashboard', compact('totalUsers'));
        // 或者用with方法:return view('dashboard')->with('totalUsers', $totalUsers);
    }
}

如果是其他PHP框架(比如ThinkPHP、CodeIgniter),思路也是一样的:查询模型数据,然后把变量赋值给视图模板。

第二步:在AdminLTE仪表盘视图中展示数据

接下来分两种场景处理,看你之前的需求:

场景1:直接在HTML中渲染(最简单高效)

找到AdminLTE仪表盘里展示数值的卡片(比如info-box组件),直接用模板引擎语法输出后端传过来的$totalUsers:

<!-- resources/views/dashboard.blade.php(Laravel示例) -->
<div class="info-box">
  <span class="info-box-icon bg-primary"><i class="fas fa-users"></i></span>
  <div class="info-box-content">
    <span class="info-box-text">总用户数</span>
    <!-- 直接输出后端传递的用户总数 -->
    <span class="info-box-number">{{ $totalUsers }}</span>
  </div>
</div>

这样页面加载的时候就直接显示用户总数,不需要额外的JS请求,速度更快。

场景2:保留jQuery异步加载的方式

如果你还是想用jQuery来更新数值(比如需要定时刷新),可以先把后端数据存在页面的data属性里,或者写个简单的API接口:

方式A:通过data属性传递数据

在页面某个元素上存储用户总数,然后用jQuery读取:

<!-- 在仪表盘页面添加一个隐藏元素存储数据 -->
<div id="user-count-data" data-total="{{ $totalUsers }}" style="display: none;"></div>

<!-- 然后在你的jQuery文件里读取 -->
<script>
$(document).ready(function() {
  // 从data属性获取用户总数
  const totalUsers = $('#user-count-data').data('total');
  // 更新到仪表盘的数值位置
  $('.info-box-number').text(totalUsers);
  
  // 如果需要定时刷新,可以加个定时器,调用API接口重新获取
  setInterval(function() {
    $.get('/api/user-count', function(response) {
      $('.info-box-number').text(response.count);
    });
  }, 60000); // 每分钟刷新一次
});
</script>

方式B:写API接口异步获取

先在路由里添加一个API接口:

// routes/api.php
use App\Models\User;

Route::get('/user-count', function() {
    return response()->json([
        'count' => User::count()
    ]);
});

然后在jQuery里请求这个接口:

$(document).ready(function() {
  // 页面加载时获取一次数据
  $.get('/api/user-count', function(response) {
    $('.info-box-number').text(response.count);
  });
});
小提醒
  • 别忘了给仪表盘路由加上权限验证(比如Laravel的auth中间件),避免未登录用户访问;
  • 如果统计的是特定条件的用户(比如激活的用户),可以改成User::where('status', 'active')->count();
  • 如果是其他框架,模板语法会略有不同,比如ThinkPHP用{$totalUsers},CodeIgniter用<?= $totalUsers ?>,核心逻辑都是一样的。

内容的提问来源于stack exchange,提问作者Bharat Mane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:09:55