Jquery Rails 4中的Ajax不会更新内容

Jquery Rails 4中的Ajax不会更新内容,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,我有控制器:“喜欢”和动作:“创造” 此操作将请求json并使用ajax更新视图,如果我编写以下命令,视图将正确呈现: $("#like_count-<%= @micropost.id %>").html('<%= @likes %>'); $(“#like_count-”).html(“”); 但写作: $("#like_count-<%= @micropost.id %>").html('<%= @micropost.count_likes %&

我有控制器:“喜欢”和动作:“创造”

此操作将请求json并使用ajax更新视图,如果我编写以下命令,视图将正确呈现:

$("#like_count-<%= @micropost.id %>").html('<%= @likes %>');
$(“#like_count-”).html(“”);
但写作:

$("#like_count-<%= @micropost.id %>").html('<%= @micropost.count_likes %>');
$(“#like_count-”).html(“”);
无济于事。我还检查了@micropost.reload之后,@micropost.count\u likes的值是否已更新。我不知道为什么会这样。希望你们能帮忙。以下是Micropost的源代码:

class Micropost < ActiveRecord::Base
 # micropost belong to one user
 belongs_to :user

 # many user can like one micropost
 has_many :user_likes, class_name: "Like",
       foreign_key: "micropost_id",
       dependent: :destroy
 has_many :likers, through: :user_likes, source: :user

 default_scope -> { order(created_at: :desc) }
 mount_uploader :picture, PictureUploader

 validates(:content, presence: true, length: {:maximum => 200})
 validates(:user_id, presence: true)
 validate :picture_size

 def count_likes
   user_likes.length > 0 ? "(#{user_likes.length})" : ""
 end

 private
 # Validates the size of an uploaded picture.
 def picture_size
   if picture.size > 1.megabytes
     errors.add(:picture, "should be less than 1MB")
  end
 end
end
class Micropost{顺序(在::desc创建)}
挂载上传器:图片,图片上传器
验证(:content,presence:true,length:{:max=>200})
验证(:user_id,presence:true)
验证:图片大小
你喜欢什么
用户_.length>0?“(#{user_likes.length})”:”
结束
私有的
#验证上载图片的大小。
def图片大小
如果picture.size>1.MB
错误。添加(:图片,“应小于1MB”)
结束
结束
结束
更新

将表单post请求发送给喜欢的人#创建:


用户类:

class User < ActiveRecord::Base
...
# user can like many microposts
has_many :pos_likes, class_name: "Like",
       foreign_key: "user_id",
       dependent: :destroy
has_many :fav_posts, through: :pos_likes, source: :micropost
...
# like a post
def like(micropost)
   self.pos_likes.create(user_id: self.id, micropost_id: micropost.id)
end
class用户
这里的问题是使用
#length
而不是
#count
方法。 下面是它们之间差异的一个很好的解释:


所以要解决这个问题,你需要在你的
microspost\count\p>中使用
user\u likes.count
而不是
user\u likes.length
,你确定原因在AJAX中吗?您可以添加发送到控制器的参数吗?还可以添加
User#like
code@NickolayKondratenko我已经更新了问题检查
当前用户做了什么。比如(@micropost)
return@NickolayKondratenko函数
current\u user.like(@micropost)
正在运行
create
返回一个新的“like”
<%= form_for(micropost.user_likes.build, remote: true) do |f| %>
<div><%= hidden_field_tag :micropost_id, micropost.id %></div>
<%= f.submit "like", class: "btn btn-primary", style: "width: 100px" %>
<% end %>
class User < ActiveRecord::Base
...
# user can like many microposts
has_many :pos_likes, class_name: "Like",
       foreign_key: "user_id",
       dependent: :destroy
has_many :fav_posts, through: :pos_likes, source: :micropost
...
# like a post
def like(micropost)
   self.pos_likes.create(user_id: self.id, micropost_id: micropost.id)
end