我正在使用 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,而不是“子弹”?
答案 0 :(得分:0)
我认为您已经在params software_id中获得了模型“软件”的“标题”,因为您已将其用作friendly_id的代码。 Software.friendly.find(params[:id])
为匹配的friendly_id带来记录。您将获得如下的ID,
@software = Software.friendly.find(params[:id])
@software.id
答案 1 :(得分:0)
在您的 like.js 中,您可以使用以下代码吗:
$('#like-icon-software-<%= software.id.to_s %>')
代替此:
$('#like-icon-software-<%= @software.id.to_s %>')