我有一个_user.html.erb部分,我在我的用户#Index操作上呈现,其中嵌入了一个表单,允许跟随和取消每个用户。我还在关系控制器中附带了create.js.erb和destroy.js.erb文件来处理AJAX。现在我必须刷新页面,以便通过单击"关注/取消关注"来查看所做的更改。用户名旁边的按钮,但第一个用户的记录行为正确。
_user.html.erb
<div id ="follow_form">
<% if current_user.following?(user) %>
<%= form_for(current_user.relationships.find_by(followed_id: user.id),
html: { method: :delete },
remote: true) do |f| %>
<%= f.submit "Unfollow", class: "btn btn-large" %>
<% end %>
<% else %>
<%= form_for(current_user.relationships.build(followed_id: user.id),
remote: true) do |f| %>
<div><%= f.hidden_field :followed_id %></div>
<%= f.submit "Follow", class: "btn btn-large btn-primary" %>
<% end %>
<% end %>
create.js.erb
$("#follow_form").html("<%= escape_javascript(render('users/unfollow')) %>")
$("#followers").html('<%= @user.followers.count %>')
destroy.js.erb
$("#follow_form").html("<%= escape_javascript(render('users/follow')) %>")
$("#followers").html('<%= @user.followers.count %>')
这是指向我的users_controller.rb https://gist.github.com/anonymous/9608208和我的relationships_controller.rb https://gist.github.com/anonymous/9608284
的链接我已尝试将div更改为动态内容,例如
<div id ="follow_form_<%= user.id %>">
但是当我对这样的javascript进行相同的更改时
$("#follow_form_<%= user.id %>").find.html("<%= escape_javascript(render('users/unfollow')) %>")
它似乎无法运作。
我一直在试图弄清楚如何将user.id属性传递到javascript中,但我正在崩溃。
答案 0 :(得分:0)
事实证明问题出在我的_follow_form.html.erb部分。 我不得不改变
<div id="follow_form">
到
<div id="follow_form_<%= @user.id %>">
我以为我只需要在_user.html.erb部分进行更改,但我错了。我当前的用户部分使用相同的div id来包含Users#Index视图中的按钮
<div id ="follow_form_<%= user.id %>">