心はいつもAirPucci (空元気でもいいから)

毎日がPucciを着ているような気分

RailsTutorial4.0を高速で復習する。7.6章。演習。

   


7.6演習
1問目です。

リスト7.30のコードを使用して、7.1.4で定義されたgravatar_forヘルパーにオプションのsizeパラメーターを取ることができる (gravatar_for user, size: 40のようなコードをビューで使用できる) ことを確認してください。

gravatar_forヘルパーはRailsのヘルパーかとおもいきや、自作ヘルパーとしてapp/helpers/users_helper.rbに書いたのでした。
これはリスト7.30 がそのまま答えです。

リスト7.30 gravatar_forヘルパー用のオプションの:sizeパラメーターを定義する。
app/helpers/users_helper.rb

module UsersHelper

  # Returns the Gravatar (http://gravatar.com/) for the given user.
  def gravatar_for(user, options = { size: 50 })
    gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
    size = options[:size]
    gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}?s=#{size}"
    image_tag(gravatar_url, alt: user.name, class: "gravatar")
  end
end

{ size: 50 }の数字を色々変えてhttp://localhost:3000/users/1にアクセスすると写真の大きさが変わります。

2問目。

リスト7.23で実装したエラーメッセージをテストするコードを書いてください。リスト7.31のように書き始めるのがお勧めです。

リスト7.31 お勧めのエラーメッセージテスト。
spec/requests/user_pages_spec.rb

略
  describe "signup" do

    before { visit signup_path }
略
    describe "with invalid information" do
略
      describe "after submission" do
        before { click_button submit }

        it { should have_title('Sign up') }
        it { should have_content('error') }
      end
略

これこのまま答えですね。

テストはパスしました。次回やる時は実装前にテスト書きたいです。

3問目。

リスト7.32のテストが、createアクションでユーザーを保存した後の動作を正しく捉えていることを確認してください。確認方法は、最初にテストを書いてもよいし、アプリケーションのコードをわざと壊してその後修正しても構いません。リスト7.32では、Capybaraのhave_selectorメソッドを導入しています。これは (特定のCSSクラスに属する) 特定のHTMLタグが存在しているかどうかをテストします。

リスト7.32 createアクションで保存が行われた後の動作をテストする。
spec/requests/user_pages_spec.rb

略
    describe "with valid information" do
略
      describe "after saving the user" do
        before { click_button submit }
        let(:user) { User.find_by(email: 'user@example.com') }

        it { should have_title(user.name) }
        it { should have_selector('div.alert.alert-success', text: 'Welcome') }
      end

RSpecちゃんと勉強したい!けどまだなので、このまま書いてテストします。
テストはパスしました。次回やる時は実装前にテスト書きたいです。

4問目。

既に書いたとおり、リスト7.27のコードは美しいとは言えません。より読みやすくしたリスト7.33のコードに対してテストスイートを実行し、こちらも正常に動作することを確認してください。このコードでは、Railsのcontent_tagヘルパーを使用しています。

リスト7.33 サイトのレイアウトにあるflash ERbでcontent_tagを使用する。
app/views/layouts/application.html.erb



.
.
.
<% flash.each do |key, value| %>
<%= content_tag(:div, value, class: "alert alert-#{key}") %>
<% end %>
.
.
.

<% flash.each do |key, value| %>

 - テクニカル ,

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事

no image
Macで.htaccessを表示する設定

MacBook Air2代目。以前は行っていた.(ドット)がついたファイルをMa …

no image
RailsTutorial4.0を高速で復習する。5.3.4章。

5.3.4RSpecを洗練させる、です。 確かに、名前付きルートに書き換えていて …

no image
Homebrewをインストールする。

MacOS 10.8.5(Mountain Lion)にRuby&Ru …

no image
RailsGirlsMore!でRailsTutorialのキモチワルイところがスッキリしました

RailsGirls松江からのぉ〜東京More!*既に2回目から1ヶ月半。またま …

MicrosoftのFutureVision 2019 vs 2011 vs 2010

Wiredで取り上げられたので、今日はMSのFutureVisionが話題でした …

no image
RailsTutorial4.0を高速で復習する。3.3章。

テストコードが長くなったからリファクタリングするかも、、といいながら、静的ページ …

パーフェクトRuby 1章Rubyの概要

メタプログラミングRubyもいいのですが、余計な物語仕立てがどうも性に合わず、消 …

no image
future vision 2019 vs 2010

マイクロソフトのfuture visonが話題らしい。 2019年の近未来。 情 …

no image
RailsTutorial4.0を高速で復習する。6章。

第6章ユーザーのモデルを作成する。です。ここから開発っぽくなってきます。って今ま …

no image
RailsTutorial4.0を高速で復習する。4.1章の途中から。

さて、4.1章の途中にある、変だなと思っている箇所、 リスト4.4 Homeペー …