ruby-on-rails - 当我使用 Friendly_id gem 时未定义的“id”
问题描述
我正在使用friendly_id gem来修改我的网址。但是我的点赞系统有问题。
为了使用friendly_id,我更改了我的控制器:
@software = Software.find(params[:id])
至
@software = Software.friendly.find(params[:id])
所以我的like.js无法识别我的模型的 id。这是错误:
ActionView::Template::Error (undefined method `id' for nil:NilClass):
1: $('#like-icon-software-<%= @software.id.to_s %>').
2: html('<%= j render "softwares/like_icon", {is_liked: @is_liked, software: @software} %>');
谢谢你的帮助,对不起我的英语..
编辑1:
我进入参数:
Processing by LikesController#create as JS Parameters: {"software_id"=>"Odoo"}
代替
Processing by LikesController#create as JS Parameters: {"software_id"=>"1"}
没有friendly_id。
模型/软件.rb
extend FriendlyId
friendly_id :title, use: [:slugged, :finders]
def is_liked user
Like.find_by(user_id: user.id, software_id: id)
end
如何继续接收 id 而不是“slug”?
解决方案
我认为您在 params software_id 中获得了模型“软件”的“标题”,因为您已将它用作友好 ID 的 slug。Software.friendly.find(params[:id])
为匹配的friendly_id 带来记录。你会得到如下的id,
@software = Software.friendly.find(params[:id])
@software.id
推荐阅读
- rxjs - 合并弃用警告混淆
- php - Laravel Socialite 使用社交帐户注册用户并强制他们选择用户名
- powerapps - PowerApps - 如何在启用按钮之前禁用按钮几秒钟?
- python-3.x - 这是否可以在构建后在 docker 容器中设置环境变量?
- c# - 在winforms listview c#中显示错误的图像
- android - getSize() 在 API 级别 30 中已弃用
- android - Android Studio Emulator : Unhandled exit 1d (Mac OS : Big Sur Beta)
- javascript - 如何让所有精选视频在wordpress中自动播放
- sql - 仅当某些列不重复时才插入 SQL Server 表
- azure-sql-database - 查看用户在 Azure SQL 中运行的 sql 语句的历史记录