読者です 読者をやめる 読者になる 読者になる

ネット偽善者でもいいじゃない

悩んでるなら面白いマンガ読もう

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>