当前位置: 首页 > 文档资料 > Ruby on Rails 教程 >

7.7 练习

优质
小牛编辑
129浏览
2023-12-01

电子书中有练习的答案,如果想阅读参考答案,请购买电子书

避免练习和正文冲突的方法参见3.6 节中的说明。

  1. 确认代码清单 7.31 中的代码允许 7.1.4 节定义的 gravatar_for 辅助方法接受可选的 size 参数,可以在视图中使用类似 gravatar_for user, size: 50 这样的代码。(9.3.1 节会使用这个改进后的辅助方法。)

  2. 编写测试检查代码清单 7.18 中实现的错误消息。测试写得多详细由你自己决定,可以参照代码清单 7.32

  3. 编写测试检查 7.4.2 节实现的闪现消息。测试写得多详细由你自己决定,可以参照代码清单 7.33,把 FILL_IN 换成适当的代码。(即便不测试闪现消息的内容,只测试有正确的键也很脆弱,所以我倾向于只测试闪现消息不为空。)

  4. 7.4.2 节说过,代码清单 7.25 中闪现消息的 HTML 有点乱。换用代码清单 7.34 中的代码,运行测试组件,确认使用 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: "[email protected]",
                               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 = "[email protected]"
    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>

最后更新:

类似资料

  • 因为世人都犯了罪,亏缺了神的荣耀。如今却蒙神的恩典,因基督耶稣的救赎,就白白的称义。神设立耶稣作挽回祭,是凭着耶稣的血,藉着人的信,要显明神的义。因为他用忍耐的心,宽容人先时所犯的罪。好在今时显明他的义,使人知道自己为义,也称信耶稣的人为义。(ROAMNS 3:23-26) 练习 有学习者问:“看完你的教程,我可以达到什么水平?” 我无语。 同样小学、中学甚至大学,同班同学读同一本书,天天由同一个

  • 练习 对实验报告的要求: 基于markdown格式来完成,以文本方式为主 填写各个基本练习中要求完成的报告内容 完成实验后,请分析ucore_lab中提供的参考答案,并请在实验报告中说明你的实现与参考答案的区别 列出你认为本实验中重要的知识点,以及与对应的OS原理中的知识点,并简要说明你对二者的含义,关系,差异等方面的理解(也可能出现实验中的知识点没有对应的原理知识点) 列出你认为OS原理中很重要

  • 练习 对实验报告的要求: 基于markdown格式来完成,以文本方式为主 填写各个基本练习中要求完成的报告内容 完成实验后,请分析ucore_lab中提供的参考答案,并请在实验报告中说明你的实现与参考答案的区别 列出你认为本实验中重要的知识点,以及与对应的OS原理中的知识点,并简要说明你对二者的含义,关系,差异等方面的理解(也可能出现实验中的知识点没有对应的原理知识点) 列出你认为OS原理中很重要

  • 练习 对实验报告的要求: 基于markdown格式来完成,以文本方式为主 填写各个基本练习中要求完成的报告内容 完成实验后,请分析ucore_lab中提供的参考答案,并请在实验报告中说明你的实现与参考答案的区别 列出你认为本实验中重要的知识点,以及与对应的OS原理中的知识点,并简要说明你对二者的含义,关系,差异等方面的理解(也可能出现实验中的知识点没有对应的原理知识点) 列出你认为OS原理中很重要

  • 练习 对实验报告的要求: 基于markdown格式来完成,以文本方式为主 填写各个基本练习中要求完成的报告内容 完成实验后,请分析ucore_lab中提供的参考答案,并请在实验报告中说明你的实现与参考答案的区别 列出你认为本实验中重要的知识点,以及与对应的OS原理中的知识点,并简要说明你对二者的含义,关系,差异等方面的理解(也可能出现实验中的知识点没有对应的原理知识点) 列出你认为OS原理中很重要

  • 练习 对实验报告的要求: 基于markdown格式来完成,以文本方式为主 填写各个基本练习中要求完成的报告内容 完成实验后,请分析ucore_lab中提供的参考答案,并请在实验报告中说明你的实现与参考答案的区别 列出你认为本实验中重要的知识点,以及与对应的OS原理中的知识点,并简要说明你对二者的含义,关系,差异等方面的理解(也可能出现实验中的知识点没有对应的原理知识点) 列出你认为OS原理中很重要