Rails 3:jquery改变部分
rails newbie herem,我想学习一些关于jquery的东西,所以我想我会尝试使用AJAX在我的部分视图之间切换。
现在在我的用户短划线上我有一个指向他们’喜欢’页面的链接,它需要完全重新加载才能看到’喜欢’页面,我将如何更改这个以使用likes_user_path @用户刷新?
视图/页/ home.html.erb
<a href="https://stackoverflow.com/questions/7865198/rails-3-jquery-to-change-partials/"> Likes
UsersController
def likes @title = "Likes" @user = User.find(params[:id]) @like_stuff = @user.likes.paginate(:page => params[:page]) render 'show_likes' end
我的理解是,您希望通过在用户仪表板中使用ajax单击链接来重新加载likes
的内容。
首先要做的是重写链接,并添加:remote => true
如下所示:
<%= link_to "Likes", likes_user_path(@user), :remote => true %>
然后,在你的控制器中,确保你有一个respond_to :html, :js
在顶部(当然可以有其他选项,但是:js
必须在其中)
在那之后,你可以在你的控制器中做一个名为likes
的函数,用于加载喜欢的东西,看起来像你的,只有你最后不做render
,但是respond_with @likes
。 通过在respond_to
filter中使用:js
,Rails将在应有时自动执行操作。
接下来,制作一个名为likes.js.erb
的相应视图(我不确定coffeescript是否可以在这种情况下开箱即用),你可以在其中放置类似的东西
$('#likes').html('<%= escape_javascript(render "likes", :likes => @likes) %>');
这假设在你想要渲染喜欢的主视图中,有一个id=likes
的元素,它看起来像这样:
<%= render "likes", :likes => @likes %>
并且还有一个_likes.html.erb
部分来呈现喜欢的内容
<% likes.each do |like| %> <%= like.name %> <% end %>
有了这个,我想我几乎涵盖了它。