将 AJAX 添加到带计数器的轨道 4 喜欢/不喜欢按钮
Adding AJAX to Rails 4 Like/Unlike Button with Counter
>想知道我是否可以在尝试将 ajax 添加到我的喜欢/不喜欢功能时获得一些帮助。现在一切正常(没有 ajax),但我想添加 ajax,从而避免在单击喜欢/不同时重新加载页面。我已经绞尽脑汁好几个小时了,在stackoverflow和其他任何地方阅读了有关此的所有相关问题,但无济于事。因此,任何帮助将不胜感激。
我有一个项目、用户、喜欢模型(以及其他),用户可以点击喜欢/不像(我用了部分link_to助手)特定项目和计数器显示整体喜欢。
视图/项目/_like_button.html.erb
<div id="like_or_unlike">
<% if @project.liked?(current_user) %>
<% like = @project.likes.where(:user_id => current_user.id).first %>
<div class="unlike_button">
<%= link_to "UnLike", like_path(id: like.id, project_id: @project.id), :method => :delete %>
</div>
<% else %>
<%= link_to "Like", project_likes_path(@project), :remote => true, :method => :post %>
<% end %>
</div>
控制器/likes_controller.rb
class LikesController < ApplicationController
def index
@user = current_user
@projects = Project.all
end
def create
@project = Project.find(params[:project_id])
Like.create(:project => @project, :user => current_user)
respond_to do |format|
format.html { redirect_to project_path(@project), :notice => "Liked!" }
format.js { render '/projects/show.js.erb' }
end
end
def destroy
@project = Project.find(params[:project_id])
like = Like.find(params[:id])
like.destroy
respond_to do |format|
format.html { redirect_to project_path(@project), :notice => "Unliked!" }
format.js { render '/projects/show.js.erb' }
end
end
end
视图/项目/显示.js.erb
$('#like_or_unlike').html('<%= j(render partial: '/projects/like_button') %>');
$('.likeit').html('<%= @project.likes.count %>');
我知道上面的 show.js.erb 是不正确的,而且,我对应该叫什么或应该指向它完全困惑。同样,我知道我可能错过了一个???.JS文件来处理AJAX请求。同样,有关如何解决此问题的任何帮助或指导将不胜感激,谢谢!
您在到达respond_to
块之前重定向请求。redirect_to
之后的任何内容都不会运行。您还缺少用于关闭respond_to
块的 end
语句。我假设您只想在 HTML 请求上重定向用户。如果是这样,请将create
和destroy
方法的结尾更改为:
respond_to do |format|
format.html { redirect_to project_path(project), :notice => "Some message" }
format.js { render 'your_javascript_file' }
end
现在你需要一些Javascript文件来实际更改网页。您是否需要一个或两个 Javascript 文件取决于您以及您希望每个链接在单击后的行为方式。
相关文章:
- Codeacademy Javascript..好的!/输出正确,但codeacademy没有;I don’我不喜欢
- 如何确定相对较新版本的IE的高度和宽度(IE8不喜欢从JavaScript设置这种样式吗?
- Angular http.get没有'我不喜欢在开头和结尾加方括号的文本文件
- 为什么IE浏览器不喜欢我的点击事件
- 试图执行JSON.parse,但它不喜欢我使用服务器返回的字符串所做的操作
- IE不喜欢我的输入和图像标签
- 将 AJAX 添加到带计数器的轨道 4 喜欢/不喜欢按钮
- Firefox 不喜欢 jquery 中的 .val
- 使用draggable.helper,但我想将助手添加到DOM中,但它不喜欢它
- JSLint 不喜欢 ++ 增量器.什么是++i的替代品
- 即不喜欢范围
- JSLint 不喜欢默认作为开关中的第一种情况
- 如何捕捉Facebook“不喜欢”事件
- IE不喜欢API中的toLocaleDateString()
- 为什么adBlock不'I don’我不喜欢这根绳子
- ColorBox没有'我不喜欢我的Iframe参数
- AngularJs中的喜欢/不喜欢功能
- 在facebook上显示喜欢/不喜欢的页面
- 喜欢不喜欢函数AJAX
- 防止多次点击 Angular 中的喜欢/不喜欢