ruby-on-rails - 为什么这个 ajax:success 调用不起作用?
问题描述
我知道有很多关于这个的线索,但我似乎无法弄清楚这里出了什么问题。我有一个调用类似方法的远程链接。
当我点赞链接...
发生什么事:
- 已
like
创建(如预期的那样)。 - 页面不刷新(如预期的那样)。
应该发生什么:
- 以上所有内容,加上
like.js.erb
. 我已在此文件中添加了一个 console.log,单击类似链接时它不会显示。
_like.html.erb
<% recipe = recipe || @recipe %>
<%= link_to unlike_recipe_path(recipe), remote: true, class: "recipe-card__like like" do %>
<i class="heart icon"></i>
<% end %>
注意:部分呈现在显示页面和索引中,这就是我使用 || 的原因 陈述。
像.js.erb
$('.like').bind('ajax:success', function(){
console.log('like clicked');
$(this).closest('.like').hide();
$(this).closest('.like-container').html('<%= escape_javascript (render partial: 'unlike', recipe: @recipe ) %>');
});
路线.rb
resources :recipes do
resources :likes
member do
get "/like", to: "recipes#like"
end
end
recipes_controller.rb
def like
@recipe = Recipe.find(params[:id])
@like = @recipe.likes.create(recipe_id: @recipe.id, user_id: current_user["uid"])
respond_to do |format|
format.html
format.js
end
end
应用程序.js
//= require jquery
//= require jquery_ujs
//= require rails-ujs
//= require turbolinks
//= require semantic-ui/sidebar
//= require_tree .
解决方案
您可以使用 JS/Html/Ajax 以多种方式完成此操作。
#like.js.erb
#if wanna validate the request success or fail use @like
# just make sure @like is not string type otherwise it will always success in JS file.
if("<%= @like %>"){
console.log('like clicked');
$(this).closest('.like').hide();
$(this).closest('.like-container').html('<%= escape_javascript (render partial: 'unlike', recipe: @recipe ) %>');
}
此外,在控制器中不需要recipe_id: @recipe.id
. 它应该自动分配。
@like = @recipe.likes.create(user_id: current_user["uid"])
推荐阅读
- excel - 空单元到早期的 While Wend
- python - 如何改进我的随机字符串生成器
- matplotlib - TypeError:“元组”对象不可调用;matplotlib 无花果大小
- ajax - 我的 ajax 数据提交函数抛出错误
- tensorflow - 如何解决 model.predict() 中的 ValueError?
- python-3.7 - 如何为 python 3.7 安装 staza(此命令返回错误(!pip install stanza))
- java - 自定义 ThrowableRenderer 不工作 log4j 1.x
- python - hackerearth - 列表轮换问题 - 运行时错误 NZEC
- c# - 获取C#变量下函数的MethodInfo
- typescript - 如何在其父类的数组中访问子类的属性