问题描述
我是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也是如此。 目前,我要显示在页面右侧的是链接用户的用户名。 当我单击每个帖子底部的每个用户名链接时,此功能的主要功能就是呈现此信息。 理想情况下,我想实现此目标而不必每次都刷新整个页面。
我花了几天的时间来思考这个问题,但是目前我的知识/能力很有限-任何帮助都太棒了! 谢谢!
1楼
对于一些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资产管道进行编译。 我认为稍后将在微博教程中介绍。