gpt4 book ai didi

ruby-on-rails - 用户中的 NoMethodError#show on rails 项目

转载 作者:数据小太阳 更新时间:2023-10-29 08:36:19 24 4
gpt4 key购买 nike

我一直在 Users#show 中收到 NoMethodError

undefined method `downcase' for nil:NilClass

我不明白在尝试使用 gravatar 时到底错误在哪里。我发布了相关代码以帮助解决我的问题。有什么我想念的吗?


show.html.erb

<h1 align="center"> Welcome to <%= @user.username %>'s page</h1>
<div class="row">
<div class="col-md-4 col-md-offset-4 center">
<%= gravatar_for @user %>
</div>
</div>
<h4 align="center"><%= @user.username %>'s articles</h4>

users_controller.rb

class UsersController < ApplicationController

def new
@user = User.new
end

def create
@user = User.new(user_params)
if @user.save
flash[:success] = "Welcome to the alpha blog #{@user.username}"
redirect_to articles_path
else
render 'new'
end
end

def edit
@user = User.find(params[:id])
end

def update
@user = User.find(params[:id])
if @user.update(user_params)
flash[:success] = "Your account was updated successfully"
redirect_to articles_path
else
render 'edit'
end
end

def show
@user = User.find(params[:id])
end

private

def user_params
params.require(:user).permit(:username, :email, :password)
end
end

application_helper.rb

module ApplicationHelper
def gravatar_for(user)
gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
image_tag(gravatar_url, alt: user.username, class: "img-circle")
end
end

最佳答案

错误在 gravatar_for 方法的第一行。user.email 为 nil,因此当它尝试在 nil 对象上调用 downcase 时会出现此错误。发生这种情况是因为用户没有电子邮件。

在尝试获取用户的头像之前,您应该检查用户是否有电子邮件,或者通过对用户模型进行验证来确保每个用户都有电子邮件。

关于ruby-on-rails - 用户中的 NoMethodError#show on rails 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36705971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com