rails 新手,我想了解一些有关 jquery 的知识,所以我想尝试使用 AJAX 在部分 View 之间切换。
现在在我的用户的破折号上,我有一个指向他们的“喜欢”页面的链接,它需要完全重新加载才能看到“喜欢”页面,我如何更改它以使用 likes_user_path@user 刷新)?
views/pages/home.html.erb
<div id="left">
<div id="dash-statistics">
<a href="<%= likes_user_path(@user) %>">
<div id="likes" class="stat">Likes
<%= @user.likes.count %>
</div>
</a>
</div>
</div>
<div id="right">
<div id="content">
</div>
</div>
用户 Controller
def likes
@title = "Likes"
@user = User.find(params[:id])
@like_stuff = @user.likes.paginate(:page => params[:page])
render 'show_likes'
end
最佳答案
据我了解,您希望通过使用 ajax 在用户仪表板中单击链接来重新加载点赞
。
首先要做的是重写链接,并添加 :remote => true
,如下所示:
<%= link_to "Likes", likes_user_path(@user), :remote => true %>
然后,在你的 Controller 中,确保顶部有一个 respond_to :html, :js
(当然可以有其他选项,但 :js
有成为其中之一)
之后,您可以在 Controller 中执行一个名为 likes
的函数,用于加载喜欢的内容,它看起来像您的,只是您不执行 render
最后,但是 respond_with @likes
。通过在 respond_to
过滤器中添加 :js
,Rails 将在需要时自动采取相应的行动。
接下来,创建一个名为 likes.js.erb
的相应 View (我不确定在这种情况下 CoffeeScript 是否可以开箱即用),在其中放置类似的内容
$('#likes').html('<%= escape_javascript(render "likes", :likes => @likes) %>');
这假设在您想要渲染点赞的主视图中,有一个带有 id=likes
的元素,如下所示:
<div id="likes">
<%= render "likes", :likes => @likes %>
</div>
还有一个 _likes.html.erb
部分,用于渲染点赞
<% likes.each do |like| %>
<div>
<%= like.name %>
</div>
<% end %>
至此,我想我已经基本涵盖了它。
关于jquery - rails 3 : jquery to change partials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7865198/