Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery Rails和ajax:充当votable行为_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

Jquery Rails和ajax:充当votable行为

Jquery Rails和ajax:充当votable行为,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,我已经在我的应用程序上创建了一个like按钮来like posts,但是我希望like append在不刷新页面的情况下看到de+1,并且“hearth”按钮是否得到填充。我尝试了以下代码,但出现以下错误: jquery.self-bd7ddd3….js?body=1:10255 PUT http://localhost:3000/posts/12/like 500 (Internal Server Error) 这是my_posts.html.erb文件: <div class="vo

我已经在我的应用程序上创建了一个like按钮来like posts,但是我希望like append在不刷新页面的情况下看到de+1,并且“hearth”按钮是否得到填充。我尝试了以下代码,但出现以下错误:

jquery.self-bd7ddd3….js?body=1:10255 PUT http://localhost:3000/posts/12/like 500 (Internal Server Error)
这是my_posts.html.erb文件:

<div class="vote-rv">
          <% if current_user.liked? post %>
            <%= link_to "", dislike_post_path(post), class: "dislike fa fa-heart", method: :put, remote: true %>
          <% else %>
            <%= link_to "", like_post_path(post), class: "like fa fa-heart-o", method: :put, remote: true %>
          <% end %>
          <span class="badge" data-id="<%= post.id %>"><%= post.get_likes.size %></span>
          </div>
这是我的帖子。\u controller.rb(喜欢和不喜欢方法)

你知道问题出在哪里吗


谢谢大家!

您需要包含两个
js.erb
文件,一个名为
like.js.erb
,另一个名为
dislike.js.erb
,它们响应控制器中的like和dislike方法

下面是
like.js.erb
ajax文件的一个示例。这在视图/帖子下,与您的
\u posts.html.erb
文件位于同一文件夹中:

$('.like').bind('ajax:success', function() {
    $('<%= post.id %>').html('<%= escape_javascript post.get_likes.size %>');
    $('#like_<%= post.id %>').removeClass('fa-heart-o').addClass('fa-heart');
});
将“喜欢”和“不喜欢”方法更改为:

@post.liked_by current_user
respond_to do |format|
    format.html { redirect_to :back }
    format.js
end

@post.disliked_by current_user
respond_to do |format|
    format.html { redirect_to :back }
    format.js
end

您需要包含两个
js.erb
文件,一个名为
like.js.erb
,另一个名为
dislike.js.erb
,它们响应控制器中的like和dislike方法

下面是
like.js.erb
ajax文件的一个示例。这在视图/帖子下,与您的
\u posts.html.erb
文件位于同一文件夹中:

$('.like').bind('ajax:success', function() {
    $('<%= post.id %>').html('<%= escape_javascript post.get_likes.size %>');
    $('#like_<%= post.id %>').removeClass('fa-heart-o').addClass('fa-heart');
});
将“喜欢”和“不喜欢”方法更改为:

@post.liked_by current_user
respond_to do |format|
    format.html { redirect_to :back }
    format.js
end

@post.disliked_by current_user
respond_to do |format|
    format.html { redirect_to :back }
    format.js
end

但是您的js.erb文件(对ajax请求的响应)在哪里?在post视图中应该有like.js.erb和unlike.js.erb文件filder@J.D.我确信缺少了一些东西,但是我必须在这些文件中放些什么呢?但是您的js.erb文件(对ajax请求的响应)在哪里?在post视图中应该有like.js.erb和unlike.js.erb文件filder@J.D.我确信遗漏了一些东西,但我必须在这些文件中放入什么?如果我的_posts.html.erb在旅行文件夹中呢?我将两个js文件都放在_post.html.erb文件所在的traval文件夹中,或者放在post文件夹中?将js文件放在与
_posts.html.erb
相同的文件夹中是的,我尝试了以前的代码,但我已经必须刷新页面才能看到转换,仍然存在以下错误:
UThttp://localhost:3000/posts/14/dislike 500(内部服务器错误)
而且我的js文件似乎没有显示,因为我在第一行函数上放了一个控制台日志,以显示一个字符串,在我的控制台中,没有显示任何内容,但我仍然有相同的问题,对于链接中的id,您确定它是
id:“\like”
?可能:
id:“like”{post.id}
更好,不是吗?如果我的_posts.html.erb在travel文件夹中呢?我将两个js文件都放在_post.html.erb文件所在的traval文件夹中,或者放在post文件夹中?将js文件放在与
_posts.html.erb
相同的文件夹中。我尝试了以前的代码,但我已经刷新页面以查看转换,仍然存在这种情况错误:
UThttp://localhost:3000/posts/14/dislike 500(内部服务器错误)
而且我的js文件似乎没有显示,因为我在第一行函数上放了一个控制台日志,以显示一个字符串,在我的控制台中,没有显示任何内容,但我仍然有相同的问题,对于链接中的id,您确定它是
id:“like”
?也许:
id:“like”{post.id}“
更好,不是吗?
@post.liked_by current_user
respond_to do |format|
    format.html { redirect_to :back }
    format.js
end

@post.disliked_by current_user
respond_to do |format|
    format.html { redirect_to :back }
    format.js
end