Railsチュートリアル第9章の演習を先にやると第10章で詰まった
Railsチュートリアルの第10章でつまった
第10章のリスト10.33と10.34のところで赤信号だらけになってしまう 原因は、第9章の演習でコードを変更していたため
Rails チュートリアル 9章 演習 - ネット偽善者でもいいじゃない
これ、9.6の演習問題で app/views/users/new.html.erb と app/views/users/edit.html.erb
のファイルを変更していると、第10章で リスト10.33 ユーザーサインアップエラーの表示を更新する。
のところでちょっと詰まってしまうので注意 第九章の演習ではfieldsのパーシャルを使うが 第十章ではshared/error_messagesのパーシャルを使うので 重複してたコードはちゃんと記述しておかなければならないのです (一応一番下に、edit.html.erbとnew.html.erbのコード載せます)
また 例えば、第九章の演習の答えとして
Hartl's Rails Tutorial - Solutions for Ch 9 Exercises · Valhalla
を参考にした場合、 spec/requests/user_pages_spec.rbなどを変更するが 100行目あたりで
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" fill in "Confirm Password", with: "foobar" end
などとしていると、第10章の段階では fill_in "Confirmation" のほうを使っているのでエラーとなってしまう注意
app/views/users/edit.html.erb
<% provide(:title, 'Edit user') %> <h1>Update your profile</h1> <div class="row"> <div class="span6 offset3"> <%= form_for(@user) do |f| %> <%= render 'shared/error_messages', object: f.object %> <%= 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, "Confirm Password" %> <%= f.password_field :password_confirmation %> <%= f.submit "Save changes", class: "btn btn-large btn-primary" %> <% end %> <%= gravatar_for @user %> <a href="http://gravatar.com/emails" target="_blank">change</a> </div> </div>
app/views/users/new.html.erb
<% provide(:title, 'Sign up') %> <h1>Sign up</h1> <div class="row"> <div class="span6 offset3"> <%= form_for(@user) do |f| %> <%= render 'shared/error_messages', object: f.object %> <%= 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>