Rails:让用户的Micropost在另一个模型上显示

时间:2012-02-16 06:12:11

标签: ruby-on-rails ruby ruby-on-rails-3 microblogging

我有一个可以发布微博的用户模型,它显示在用户显示页面上,但我想知道如何能够将用户制作的微博显示在用户所属的模型上,例如在这种情况下学校。用户属于特定学校,学校下有许多用户。所有人都非常感谢!

用户显示页面

<div id="MicropostBody">
 <div>
 <% if @user.microposts.any? %>
    <table class="microposts">
      <%= render @microposts %>
    </table>
    <%= will_paginate @microposts %>
 <% end %>
 </div>
</div>

学校展示页 同样的事情?

<div id="MicropostBody">
 <div>
 <% if @user.microposts.any? %>
    <table class="microposts">
      <%= render @microposts %>
    </table>
    <%= will_paginate @microposts %>
 <% end %>
 </div>
</div>

用户控制器

def show
  @user = User.find(params[:id])
  @school = School.find(params[:id])
  @micropost = Micropost.new
  @microposts = @user.microposts.paginate(page: params[:page])
end

学校控制器 同样的事情??

def show
  @user = User.find(params[:id])
  @school = School.find(params[:id])
  @micropost = Micropost.new
  @microposts = @user.microposts.paginate(page: params[:page])
end

新学校管理员

def show
  @school = School.find(params[:id])
  @user = User.new
  @micropost = Micropost.new
  @microposts = @school.microposts.paginate(page: params[:page])
  @micropost = current_school.microposts.build
end

1 个答案:

答案 0 :(得分:1)

如果您还在苦苦思索,请先阅读Rails教程书的partials部分,然后再继续阅读。

users/_microposts.html.erb

<div id="MicropostBody">
  <div>
    <% if microposts.any? %>
      <table class="microposts">
        <%= render microposts %>
      </table>
      <%= will_paginate microposts %>
    <% end %>
  </div>
</div>

然后在两个视图中您都可以使用:

<%= render 'users/microposts', :microposts => @microposts %>