绑定到link_to的Javascript正在页面加载时执行?

时间:2015-09-12 04:18:35

标签: javascript jquery ruby-on-rails ruby-on-rails-4 ujs

我有一个索引页面,可以加载一堆记录。每条记录都有一个"最喜欢的"图标。点击"收藏"将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在点击收藏夹图标时执行。

1 个答案:

答案 0 :(得分:1)

您的代码在我看来是完美的,它应该没有这样的错误。似乎其他一些js代码在页面加载时触发链接点击事件。所以也尝试搜索它。

favorite.js.erb仅在js请求上执行而不在html请求上执行,而页面加载是html请求。

因此,请尝试查找触发点击事件的js代码。