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

使用Devise的current_user报错,配置before_action :authenticate_user!不生效

问题解决:Rails项目Devise辅助方法调用报参数错误

错误根因

你遇到的参数错误和before_action :authenticate_user!配置无关,错误来自自定义辅助方法的调用参数不匹配:

  • 控制器中定义的user_avatar方法明确要求传入1个user参数
  • 视图调用user_avatar时没有传入任何参数,直接触发参数数量不匹配错误

修复方案

二选一即可:

方案1:调用时传入当前用户参数

修改视图代码,给user_avatar传入提前赋值的@user实例变量:

<div class="container text-center">
 <div class="row">

    <h2>我的页面</h2>

    <%= image_tag(user_avatar(@user)) %>

</div>
</div>

方案2:修改辅助方法适配无参数调用

修改控制器的user_avatar方法,给参数设置默认值为当前登录用户,不用传参也可正常调用:

def user_avatar(user = current_user)
  # 建议替换为blank?判断,避免avatar_url为nil时调用empty?报错
  if user.avatar_url.blank?
    "https://i.guim.co.uk/img/media/26392d05302e02f7bf4eb143bb84c8097d09144b/446_167_3683_2210/master/3683.jpg?width=1200&height=1200&quality=85&auto=format&fit=crop&s=49ed3252c0b2ffb49cf8b508892e452d"
  else
    user.avatar_url
  end
end

内容的提问来源于stack exchange,提问作者Дмитрий Герасименко

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:57:01