`
peryt
  • 浏览: 52679 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论
  • waiting: 既然都指定了dataType为'script'那就不必特别在b ...
    jQuery

11.2 show microposts.

阅读更多

1. add test to test the new users/show view:

 

describe UsersController do
  render_views
  .
  describe "GET 'show'" do

    before(:each) do
      @user = Factory(:user)
    end
    . .
    it "should show the user's microposts" do
      mp1 = Factory(:micropost, :user => @user, :content => "Foo bar")
      mp2 = Factory(:micropost, :user => @user, :content => "Baz quux")
      get :show, :id => @user
      response.should have_selector("span.content", :content => mp1.content)
      response.should have_selector("span.content", :content => mp2.content)
    end
  end
  .
end

 2. then work on the show page:

 

<table class="profile">
  <tr>
    <td class="main">
      .
      .
      .
      <% unless @user.microposts.empty? %>
        <table class="microposts" summary="User microposts">
          <%= render @microposts %>
        </table>
        <%= will_paginate @microposts %>
      <% end %>
    </td>
    <td class="sidebar round">
      <strong>Name</strong> <%= @user.name %><br />
      <strong>URL</strong> <%= link_to user_path(@user), @user %><br />
      <strong>Microposts</strong> <%= @user.microposts.count %>
    </td>
  </tr>
</table>

note, we add a argument to will_paginate method.

because we are in users controller, so if the argument is @users, it can be omitted.

but this time, the argument is @microposts, so we need to specify it clearly. 

 

3. then we need to add a _micropost.html.erb partial to views/microposts dir.

 

<tr>
	<td class="micropost">
		<span class="content"><%= micropost.content %></span>
		<span class="timestamp">
			Posted <%= time_ago_in_words(micropost.created_at) %> ago.
		</span>
</tr>
 

5. we still need to add 

 

@microposts = @user.microposts.paginate(:page => params[:page])

this will return a WillPaginate::Collection......

 

6. then we need to add some sample data to see the effect of our working.

 

    50.times do 
      User.all(:limit => 6).each do |user|
        user.microposts.create!(:content => Faker::Lorem.sentence(5))
      end
    end
 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics