我有一个具有一些简单功能的rails应用程序,允许用户保存/取消保存帖子。
这样做很好,也很好,就像这样:
视图:
<p id="save_<%= frugle.id %>">
<%= link_to "Save", new_saveds_path(current_user.id, :post_id => post.id), :remote => true %>
</p>
控制器:
class SavedsController < ApplicationController
def new
@follow = Saved.create(:user_id => current_user.id, :post_id => params[:post_id])
@post = Post.find params[:post_id]
render :update do |page|
page.replace_html "save_#{@post.id}", "#{link_to "Unsave", saveds_path(current_user.id, :post_id => @post.id), :method => :delete, :remote => true }"
end
end
这很好用,花花公子。我的问题是,有时,在主页上,用户有很多帖子被查看,偶尔同一帖子会出现两次。如果用户去保存这篇文章,上面的RJS只会改变它遇到的特定id的第一个p然后停止。有没有办法在一个页面上更新所有带有该ID的p?
这有道理吗?
谢谢!
答案 0 :(得分:0)
您不能“使用该ID更新所有'p',因为根据定义,页面上只有一个元素具有给定的ID。
但是,如果您根据 rails id 为所有<p>
提供类,则可以执行您想要的操作。
示例:
<p class="object-1234">test</p>
<p class="object-5678">another test</p>
<p class="object-1234">test</p>
现在你可以做到:
$('.object-1234').hide()
并获得理想的效果。
修改强>:
此外,这假设您在AJAX视图中使用jQuery。我强烈建议你这样做 - 它比内置的rj更有用
这是关于它的截屏视频:http://railscasts.com/episodes/136-jquery