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_tofilter中使用: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 %>

有了这个,我想我几乎涵盖了它。