当前位置: 代码迷 >> JavaScript >> Rails 3:链接是否将用户信息的特定部分放入当前页面,而无需刷新?
  详细解决方案

Rails 3:链接是否将用户信息的特定部分放入当前页面,而无需刷新?

热度:130   发布时间:2023-06-07 16:42:53.0

我是Ruby on Rails / Java的新手,请保持温柔。 (使用Rails 3,Jurby,Ruby 1.8.6)

我想创建一个将信息呈现到当前页面的功能,但是在不同的部分中,单击链接时它就像在扩展用户详细信息一样,而无需转到该特定用户的个人资料。

当前,我的示例将当前用户带到链接的用户个人资料,但是我希望该信息显示在用户Feed的右侧。 (我将包括一个屏幕抓取,但是我的代表不够高)。 想象一下,页面右侧有一个用户帖子供稿,其中显示了每个用户的所有全局帖子。 在左侧,应该是一个信息框,当从关联的帖子中单击其用户名时,将填充用户摘要。

目前,我的views / pages / home.html.erb(渲染了一部分称为signed_in)

<div class="article_feed">
    <div class="article_snippet">
        <%= form_for(@micropost) do |f| %>
            <%= render 'shared/error_messages', object: f.object %>
            <div class="field">
                <%= f.text_area :content, placeholder: "Got anything to say...?" %>
            </div>
                <%= f.submit "Post", class: "btn btn-large btn-primary" %>
        <% end %>   
        Communicator.. (<%= Micropost.count %>)
    </div>

    <% @microposts.each do |mp| %>
        <div class="article_snippet">               
            <%= render mp %>
        </div>
    <% end %>
    <%= will_paginate @microposts%>     
</div>  

<div class="comments_feed">
    <div class ="comments_snippet">
        <!-- this is where I want information to be displayed, once
                a link has been clicked --> 
    </div>
</div>

我的主页控制器方法

  def home
      @micropost = current_user.microposts.build if signed_in?
      @microposts = Micropost.paginate(page: params[:page], 
              :per_page => 4).order('id DESC') if signed_in?
  end

用户使用自己的模型,控制器和视图来表示,相关的Micropost也是如此。 目前,我要显示在页面右侧的是链接用户的用户名。 当我单击每个帖子底部的每个用户名链接时,此功能的主要功能就是呈现此信息。 理想情况下,我想实现此目标而不必每次都刷新整个页面。

我花了几天的时间来思考这个问题,但是目前我的知识/能力很有限-任何帮助都太棒了! 谢谢!

对于一些javascript或jQuery,这是一项不错的任务。 看来您是Rails的新手,所以我将从js和css内联开始,一旦您了解了它的工作原理,就可以将其移到正确的位置。

首先在comments_snippet div中获取所需的内容,以便单击链接后页面看起来像您想要的那样。 然后更改comments_feed

<div class="comments_feed" id="comments" style="display: none;">

刷新页面,并确认div未显示。 然后在视图顶部添加一些javascript以显示:

<script type="text/javascript">
    function show() {
        document.getElementById("comments").style.display = "block";
    }
</script>

然后添加一个链接来调用它:

<%= link_to "Show comments", "javascript:void(0)", onclick: "show()" %>

在真实的应用程序中,您可以使用js库(例如jQuery)或CSS过渡,以实现流畅的显示/隐藏动画。 您还应该将样式和js放在单独的文件中,以便它们可以由Rails资产管道进行编译。 我认为稍后将在微博教程中介绍。

  相关解决方案