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

如何在Ruby on Rails中使用数据库字段作为元描述

解决方案:为每篇博文设置唯一元描述

很简单,你只需要调整posts_controller里show方法的代码顺序和赋值逻辑就能实现需求:

修改后的show方法代码

def show 
  @title = 'My Blog'
  @post = Post.find(params[:id]) # 先获取当前博文的对象实例
  # 将@page_description赋值为该博文的summary字段,同时处理空值情况
  @page_description = @post.summary.presence || ''
  @comment = current_user.comments.build if logged_in? 
end

关键说明:

  1. 顺序很重要:必须先通过Post.find(params[:id])获取到对应的@post对象,之后才能调用它的summary属性(也就是数据库里的t.string "summary"字段)。如果先赋值@page_description再获取@post,会抛出undefined method 'summary' for nil:NilClass的错误。
  2. 处理空值场景:使用presence || ''是为了避免当某篇博文的summary字段为空时,@page_description变成nil。这样在视图中渲染元描述标签(比如<meta name="description" content="<%= @page_description %>">)时,不会出现content="nil"的尴尬情况,而是显示空字符串。
  3. 可选:设置默认描述:如果你想在summary为空时显示一个统一的默认描述,比如"欢迎阅读我的原创博客内容",可以把赋值语句改成:
    @page_description = @post.summary.presence || '欢迎阅读我的原创博客内容'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:17:27