<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 7.7 練習 電子書中有練習的答案,如果想閱讀參考答案,請[購買電子書](http://railstutorial-china.org/#purchase)。 避免練習和正文沖突的方法參見[3.6 節](chapter3.html#mostly-static-pages-exercises)中的說明。 1. 確認[代碼清單 7.31](#listing-gravatar-option) 中的代碼允許 [7.1.4 節](#a-gravatar-image-and-a-sidebar)定義的 `gravatar_for` 輔助方法接受可選的 `size` 參數,可以在視圖中使用類似 `gravatar_for user, size: 50` 這樣的代碼。([9.3.1 節](chapter9.html#users-index)會使用這個改進后的輔助方法。) 2. 編寫測試檢查[代碼清單 7.18](#listing-f-error-messages) 中實現的錯誤消息。測試寫得多詳細由你自己決定,可以參照[代碼清單 7.32](#listing-error-messages-test)。 3. 編寫測試檢查 [7.4.2 節](#the-flash)實現的閃現消息。測試寫得多詳細由你自己決定,可以參照[代碼清單 7.33](#listing-flash-test),把 `FILL_IN` 換成適當的代碼。(即便不測試閃現消息的內容,只測試有正確的鍵也很脆弱,所以我傾向于只測試閃現消息不為空。) 4. [7.4.2 節](#the-flash)說過,[代碼清單 7.25](#listing-layout-flash) 中閃現消息的 HTML 有點亂。換用[代碼清單 7.34](#listing-layout-flash-content-tag) 中的代碼,運行測試組件,確認使用 `content_tag` 輔助方法之后效果一樣。 ##### 代碼清單 7.31:為 `gravatar_for` 輔助方法添加一個哈希參數 app/helpers/users_helper.rb ``` module UsersHelper # 返回指定用戶的 Gravatar def gravatar_for(user, options = { size: 80 }) 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 ``` ##### 代碼清單 7.32:錯誤消息測試的模板 test/integration/users_signup_test.rb ``` require 'test_helper' class UsersSignupTest < ActionDispatch::IntegrationTest test "invalid signup information" do get signup_path assert_no_difference 'User.count' do post users_path, user: { name: "", email: "user@invalid", password: "foo", password_confirmation: "bar" } end assert_template 'users/new' assert_select 'div#<CSS id for error explanation>' assert_select 'div.<CSS class for field with error>' end . . . end ``` ##### 代碼清單 7.33:閃現消息測試的模板 test/integration/users_signup_test.rb ``` require 'test_helper' . . . test "valid signup information" do get signup_path name = "Example User" email = "user@example.com" password = "password" assert_difference 'User.count', 1 do post_via_redirect users_path, user: { name: name, email: email, password: password, password_confirmation: password } end assert_template 'users/show' assert_not flash.FILL_IN end end ``` ##### 代碼清單 7.34:使用 `content_tag` 編寫網站布局中的閃現消息 app/views/layouts/application.html.erb ``` <!DOCTYPE html> <html> . . . <% flash.each do |message_type, message| %> <%= content_tag(:div, message, class: "alert alert-#{message_type}") %> <% end %> . . . </html> ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看