RoR 3:使用Ajax刷新divs的新视图

时间:2011-10-23 18:27:22

标签: javascript jquery ruby-on-rails ruby-on-rails-3

Rails新手在这里。我想学习一点jQuery,所以我想我会尝试使用AJAX在我的视图之间切换。我真的很期待有关如何做到这一点的见解!

现在,在我的用户短划线上,我有一个指向“赞”页面的链接,需要完整重新加载以查看“show_likes”视图,如何使用新视图'show_likes刷新div id =“content” '??

谢谢!

视图/页/ 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>

UsersController

def home
    @title = "Home"

    if user_signed_in?
      @user = current_user
      @post = current_user.posts.build
      @collections = @user.posts.map(&:collections).flatten.uniq
      @recommended_posts_count = @user.posts.where(:is_recommended => true).count 
      @feed_items = @user.feed.paginate(:per_page => "10", :page => params[:page]) 
   end
  end

  def likes
    @title = "Likes"
    @user = User.find(params[:id])
    @like_stuff = @user.likes.paginate(:page => params[:page])
    render 'show_likes' 
  end

2 个答案:

答案 0 :(得分:0)

有几个选择。

UJS的方式是link_to :remote => true。有关详细信息,请参阅this post

This blog post进入更多细节,但有点沉重,并讨论了一个可能或可能不符合您的喜好的特定实现。

答案 1 :(得分:0)

你应该添加:remote =&gt;对您的链接为true,然后在您的视图中创建likes.js.erb文件。还要添加

respond to do |format|
  format.js
end

到你的控制器方法。 在js.erb文件中,您可以混合使用javascript和ruby,并根据需要显示/隐藏/替换div。您应该查看jquery提供的方法(例如replaceWith)来修改div。