我有一个索引页面,可以加载一堆记录。每条记录都有一个"最喜欢的"图标。点击"收藏"将cat
发送到服务器并重新加载页面。
我试图为POST
使用jQuery(ujs ??)。
控制器操作现在看起来像这样:
POST
最喜欢的图标是在 def favorite
@record = Record.find(params[:id])
@record.toggle_flag("favorite")
end
视图中部分呈现的,并且是index
:
link_to
<%= link_to(
icon,
path,
method: :post,
remote: true
) %>
文件如下所示:
app/views/records/favorite.js.erb
当我尝试加载 console.log("I am executing");
$("[data-id='icon']").update("<%= j render 'icon', { icon: @record.favorite_icon, path: favorite_record_path } %>");
时,我收到一条错误消息,指出@record为零。但是为什么在加载index
时执行JS?此外,加载index
时,控制台日志会立即被触发。我希望JS在点击收藏夹图标时执行。
答案 0 :(得分:1)
您的代码在我看来是完美的,它应该没有这样的错误。似乎其他一些js代码在页面加载时触发链接点击事件。所以也尝试搜索它。
favorite.js.erb
仅在js请求上执行而不在html请求上执行,而页面加载是html请求。
因此,请尝试查找触发点击事件的js代码。