【发布时间】:2016-03-04 20:05:31
【问题描述】:
试图弄清楚如何让 ajax 与我的 Acts_As_Votable 按钮一起工作。
这就是我现在所拥有的。
post_controller.rb
def favorite
@post = Post.find(params[:id])
@post.upvote_from current_user
respond_to do |format|
format.js
end
end
def unfavorite
@post = Post.find(params[:id])
@post.unvote_by current_user
respond_to do |format|
format.js
end
end
_post.html.erb
<% if current_user.voted_on? post %>
<%= link_to '<i style="color: red" class="fa fa-star"></i> Favorited'.html_safe, unfavorite_post_path(post), method: :put, remote: true, id: "unfavorite" %>
<% else %>
<%= link_to '<i class="fa fa-star"></i> Favorite'.html_safe, favorite_post_path(post), method: :put, remote: true, id: "favorite" %>
<% end %>
favorite.js.erb & unfavorite.js.erb
$('#favorite').html("<i style='color: red' class='fa fa-star'></i> Favorited");
$('#unfavorite').html("<i class='fa fa-star'></i> Favorite");
现在我已经部分工作了。我有两个问题。
- 每个页面包含多个帖子。我如何告诉 format.js.erb 文件以该特定帖子的收藏按钮为目标。现在,jQuery 只更改第一个帖子按钮,无论我在页面的哪个位置单击。我尝试将 link_to id 设置为 favorite ,然后在 format.js 文件中使用 favorite ,但这没有用。
- 我想更改 format.js 文件以将实际按钮放入 div 而不仅仅是更改其文本。因此,用户无需刷新页面即可切换收藏和取消收藏。我尝试将 link_to 按钮放在 .html("") 部分中,但这不起作用。我不确定如何使用 ajax 提交发布请求。
感谢您的帮助!如果您需要更多代码,或者我不清楚某些事情,请告诉我。
【问题讨论】:
标签: javascript jquery ruby-on-rails ajax