问题描述:
我有一组链接的视图:
<% @feeds.each do |f| %>
<div class="feed">
<span class="feed_counts"> <%= f.display_counts %> </span>
<%= link_to "refresh", { :controller => 'Feeds', :action => "refresh_feed", :feed_id => f.id}, :remote => true, :class => 'refresh_feed_link' %>
</div>
<% end %>
用户单击链接并启动下一个控制器方法:
def refresh_feed
@feed = Feed.find(params[:feed_id])
@feed.parse
end
现在我想将对应的 span-element 的内容更改为 @feed.total_count 值。
我的尝试:
好吧,据我所知,有两种方法可以在不重新加载整个页面的情况下做到这一点:
方式一:
我可以在我的布局中包含 js:
<%= render :partial => 'shared/partial_js' %>
并在 partial_js 中使用此代码:
<script type="text/javascript">
$().ready(function() {
$('.refresh_feed_link').bind('click', function() {
$(this).closest('.feed').find('span.feed_counts').text('woo');
});
});
</script>
在这种情况下,我有 '$(this)' 并且可以找到相应的 'span' 元素。但是我没有任何可能获得我的@feed 变量值。
方式二:
我可以加
respond_to do | format |
format.js {render :layout => false}
end
到我的控制器并创建 refresh_feed.js.erb 文件。在这个 JS 文件中,我可以使用我的变量作为 <% @feed.total_count %>,但我不知道我的多个链接中的哪一个被点击了。换句话说,这个文件中的 $(this) 变量将是 (window) 并且我找不到相应的跨度元素。
问题:
有什么办法可以得到我想要的吗?
提前致谢。