<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之旅 廣告
                # 9.6 練習 電子書中有練習的答案,如果想閱讀參考答案,請[購買電子書](http://railstutorial-china.org/#purchase)。 避免練習和正文沖突的方法參見[3.6 節](chapter3.html#mostly-static-pages-exercises)中的說明。 1. 編寫一個測試,確保友好轉向只會在首次登錄后轉向指定的地址,以后再登錄都會轉向默認地址(即資料頁面)。提示:把這個測試添加到[代碼清單 9.26](#listing-friendly-forwarding-test) 中,檢查 `session[:forwarding_url]` 中是否保存了正確的值。 2. 編寫一個集成測試,測試布局中的所有鏈接,以及登錄后和登錄前應該看到哪些鏈接。提示:把這個測試添加到[代碼清單 5.25](chapter5.html#listing-layout-links-test) 中,使用 `log_in_as` 輔助方法。 3. 參照[代碼清單 9.59](#listing-forbidden-admin-test),直接向 `update` 動作發送 `PATCH` 請求,確認無法修改 `admin` 屬性。為了確保測試寫得正確,首先應該把 `admin` 添加到允許修改的參數列表 `user_params` 中,所以在此之前測試組件無法通過。 4. 使用[代碼清單 9.60](#listing-new-edit-partial) 中的局部視圖重構 `new.html.erb` 和 `edit.html.erb` 視圖中的表單,重構后的代碼如[代碼清單 9.61](#listing-new-user-with-partial) 和[代碼清單 9.62](#listing-edit-user-with-partial) 所示。注意這里使用 `provide` 方法([3.4.3 節](chapter3.html#layouts-and-embedded-ruby)用過)避免布局中有重復。[[12](#fn-12)] ##### 代碼清單 9.59:測試禁止修改 `admin` 屬性 test/controllers/users_controller_test.rb ``` require 'test_helper' class UsersControllerTest < ActionController::TestCase def setup @user = users(:michael) @other_user = users(:archer) end . . . test "should redirect update when logged in as wrong user" do log_in_as(@other_user) patch :update, id: @user, user: { name: @user.name, email: @user.email } assert_redirected_to root_url end test "should not allow the admin attribute to be edited via the web" do log_in_as(@other_user) assert_not @other_user.admin? patch :update, id: @other_user, user: { password: FILL_IN, password_confirmation: FILL_IN, admin: FILL_IN } assert_not @other_user.FILL_IN.admin? end . . . end ``` ##### 代碼清單 9.60:`new` 和 `edit` 視圖中使用的表單局部視圖 app/views/users/_form.html.erb ``` <%= form_for(@user) do |f| %> <%= render 'shared/error_messages', object: @user %> <%= f.label :name %> <%= f.text_field :name, class: 'form-control' %> <%= f.label :email %> <%= f.email_field :email, class: 'form-control' %> <%= f.label :password %> <%= f.password_field :password, class: 'form-control' %> <%= f.label :password_confirmation %> <%= f.password_field :password_confirmation, class: 'form-control' %> <%= f.submit yield(:button_text), class: "btn btn-primary" %> <% end %> ``` ##### 代碼清單 9.61:使用局部視圖的注冊頁面視圖 app/views/users/new.html.erb ``` <% provide(:title, 'Sign up') %> <% provide(:button_text, 'Create my account') %> <h1>Sign up</h1> <div class="row"> <div class="col-md-6 col-md-offset-3"> <%= render 'form' %> </div> </div> ``` ##### 代碼清單 9.62:使用局部視圖的編輯頁面視圖 app/views/users/edit.html.erb ``` <% provide(:title, 'Edit user') %> <% provide(:button_text, 'Save changes') %> <h1>Update your profile</h1> <div class="row"> <div class="col-md-6 col-md-offset-3"> <%= render 'form' %> <div class="gravatar_edit"> <%= gravatar_for @user %> <a href="http://gravatar.com/emails" target="_blank">Change</a> </div> </div> </div> ```
                  <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>

                              哎呀哎呀视频在线观看