心はいつも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

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

  関連記事

RailsGirls松江からのぉ〜東京More!*既に2回目

RailsGirls東京3回目に申し込みそびれた流れから松江に参加し、チューター …

Ruby1.9+Rails3.2に加えて、Ruby2.0+Rails4.0のプロジェクトを作る。

Ruby1.9+Rails3.2のプロジェクトは作りましたが、その後、Ruby2 …

no image
MacBookAir 1日め

ようやくMacBookAir を購入しました。Dellノートがずっと調子悪かった …

Railsを立ち上げる

RubyのアップデートとRailsのインストールが無事終わったので、いよいよRa …

no image
MacBookAirは壊れるの?

1ヶ月ぶりにWindows機を立ち上げています。HDDのカリカリ言う音が冷や汗も …

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

8.1.2サインインをテストする、です。 Signin(ログイン)失敗の場合 ロ …

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

9.1.2編集の失敗、です。 テストを書きます リスト9.9 ユーザーupdat …

パーフェクトRuby 2章Rubyの基礎 2-3 条件分岐と真偽値

p50 2-3 条件分岐と真偽値 falseとnil以外は全部true p51 …

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

3.3.2タイトルのテストをパスさせる。です。 ひとまず、静的ページをhtmlの …

no image
電子雑誌を買いました

GWの計画を立てているとき、行きたい場所を検索をすると、HANAKO WESTの …