Personally, I think that controller specs should [check content of assigned instance variables](https://github.com/rspec/rspec-rails#controller-specs). Checking for page's content is the scope of view and [request specs](https://github.com/rspec/rspec-rails#request-specs).
It's also generally useful to split multiple assertion into standalone tests and [use `let`](http://betterspecs.org/#let) and [`subject`](http://blog.carbonfive.com/2010/10/21/rspec-best-practices/). So for example:

```ruby
let(:public_project) { Factory(:project, public: true) } # this could be also a separate factory
#...
it 'assigns public projects' do
  subject(:response) { response }
  before { get :show, id: public_project.permalink }

  it { should be_success }
  it 'assigns public projects' do
    expect(assigns(:public_project)).to eql(public_project)
  end
end
```