【问题标题】:undefined method `friendly' getting error from controller未定义的方法“友好”从控制器获取错误
【发布时间】:2019-01-12 05:18:29
【问题描述】:

我正在使用 ruby​​ on rails 进行项目,我想使用friendly_id gem。当我在我的项目中安装friendly_id gem 时,根据说明添加以下代码。

控制器:

def show
    @group = Group.friendly.find(params[:id])
end

型号:

extend FriendlyId
friendly_id :title, use: [:slugged]

我使用的是 rails 3.2.11 版本,friendly_id gem 是 4.0.0

控制器出现错误。我不明白为什么会这样。

错误:

undefined method `slug' for #<Group:0x000000092ac228>

更新

通过重启服务器和迁移数据库解决了之前的问题。

但它会产生新问题Couldn't find group with id=new-demo-group

【问题讨论】:

  • 您是否将 slug 字段添加/迁移到模型中?
  • 是的!我为 Group 模型添加了 slug 字段。
  • 你也重启服务器了吗?
  • 如果您将友好的 id 添加到现有模型中,您还需要将其全部重新保存以生成 slug 示例User.find_each(&amp;:save)
  • 您是否在服务器控制台中运行了该代码?

标签: ruby-on-rails ruby friendly-id


【解决方案1】:

您似乎需要更新已经创建的记录,在您的情况下是(组模型),正如文档所说:

如果您将 FriendlyId 添加到现有应用并需要生成 现有用户的 slug,从控制台、运行器执行此操作,或添加 耙任务:

Group.find_each(&:save)

Rails 控制台

在应用根目录下打开终端并运行(-e为环境)

rails console -e production

你应该得到与此类似的输出(我添加了要运行的命令):

Running via Spring preloader in process 5389
Loading production environment (Rails 5.1.5)
2.5.1 :001 > Group.find_each(&:save)

轨道跑者

在应用根目录下打开终端并运行(-e为环境)

rails runner -e production "Group.find_each(&:save)"

【讨论】:

  • 感谢您的回复,但您能解释一下如何从控制台、运行器或将 rake 任务添加到 Group.find_each(&:save)。
猜你喜欢
  • 1970-01-01
  • 2012-07-18
  • 2013-12-16
  • 1970-01-01
  • 2014-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多