在网站布局中加入debug信息
<%= debug(params) if Rails.env.development? %>
添加 Gravatar 头像和侧边栏
<% provide(:title, @user.name) %>
<h1>
<%= gravatar_for @user %>
<%= @user.name %>
</h1>
然后需要我们自己去定义Gravatar方法
module UsersHelper
# Returns the Gravatar (http://gravatar.com/) for the given user.
def gravatar_for(user)
gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
image_tag(gravatar_url, alt: user.name, class: "gravatar")
end
end
填写用户注册表单:
<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>
<div class="row">
<div class="span6 offset3">
<%= form_for(@user) do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.text_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation %>
<%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
<% end %>
</div>
</div>
然后要分别对注册成功和失败两种情况进行测试
describe "signup" do before {visit signup_path} let(:submit) {"Create my account"} describe "with invalid information" do it "should not create a user" do expect {click_button submit}.not_to change(User, :count) end end describe "with valid information" do before do fill_in "Name", with: "Example User" fill_in "Email", with: "user@example.com" fill_in "Password", with: "foobar" fill_in "Confirmation", with: "foobar" end it "should create a user" do expect {click_button submit}.to change(User, :count).by(1) end end end
对应action代码如下:
def create
@user = User.new(user_params)
if @user.save
#
flash[:success] = "Welcome to the Sample App!"
redirect_to @user
else
render 'new'
end
end