【问题标题】:RoR 3: using Ajax to refresh divs wIth new viewRoR 3:使用 Ajax 以新视图刷新 div
【发布时间】:2011-10-24 17:56:00
【问题描述】:

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

现在在我的用户的仪表板上我有一个指向他们的“喜欢”页面的链接,它需要完全重新加载才能看到“show_likes”视图,我将如何使用新视图“show_likes”刷新 div id="content" ' ??

谢谢!

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>

用户控制器

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

【问题讨论】:

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


    【解决方案1】:

    有几个选项。

    UJS 的方式是使用link_to:remote =&gt; true。有关详细信息,请参阅this post

    This blog post 详细介绍了更多细节,但内容有些繁重,并讨论了一种特定的实现方式,您可能喜欢也可能不喜欢。

    【讨论】:

      【解决方案2】:

      您应该将 :remote => true 添加到您的链接中,然后在您的视图中创建一个 likes.js.erb 文件。同时添加

      respond to do |format|
        format.js
      end
      

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

      【讨论】:

        猜你喜欢
        • 2014-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多