【发布时间】:2018-12-18 16:39:33
【问题描述】:
我正在使用 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。
models/software.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”?
【问题讨论】:
-
你在这个动作的参数中得到了什么?你有
id里面的参数吗?您可以在日志中查看 -
@Vasilisa 嗨,我得到了参数:由 LikesController#create 作为 JS 参数处理:{"software_id"=>"Odoo"} 而不是 {"software_id"=>"1"} 没有友好的_id。我用更多信息编辑我的问题