railsチュートリアルの10.2.2をやっていたらエラーが出ました。
ggったり翻訳したりと色々試しましたが結局わからずに諦めてエラーに書いてあるファイルのコードをrailsチュートリアルからコピペして誤字をあぶり出そうとしましたが、治りませんでした。
わかる方がいればご教授願います。
UsersEditTest#test_unsuccessful_edit: ActionView::Template::Error: First argument in form cannot contain nil or be empty app/views/layouts/_form.html.erb:1:in `_app_views_layouts__form_html_erb__4559448465336394543_70094324837480' app/views/users/edit.html.erb:6:in `_app_views_users_edit_html_erb___4397248375732246458_70094325506960' test/integration/users_edit_test.rb:10:in `block in <class:UsersEditTest>'
ちなみにコードはこれです。
users_edit_test
require 'test_helper' class UsersEditTest < ActionDispatch::IntegrationTest def setup @user = users(:michael) end test "unsuccessful edit" do log_in_as(@user) get edit_user_path(@user) assert_template 'users/edit' patch user_path(@user),params: {user:{name: "", email: "foo@invalid",password: "foo",password_confirmation:"bar"}} assert_template 'users/edit' end test "successful edit" do log_in_as(@user) get edit_user_path(@user) assert_template 'users/edit' name = "Foo Bar" email = "foo@bar.com" patch user_path(@user), params: { user: { name: name, email: email, password: "", password_confirmation: "" } } assert_not flash.empty? assert_redirected_to @user @user.reload assert_equal name, @user.name assert_equal email, @user.email end end
users_edit_test
require 'test_helper' class UsersEditTest < ActionDispatch::IntegrationTest def setup @user = users(:michael) end test "unsuccessful edit" do log_in_as(@user) get edit_user_path(@user) assert_template 'users/edit' patch user_path(@user),params: {user:{name: "", email: "foo@invalid",password: "foo",password_confirmation:"bar"}} assert_template 'users/edit' end test "successful edit" do log_in_as(@user) get edit_user_path(@user) assert_template 'users/edit' name = "Foo Bar" email = "foo@bar.com" patch user_path(@user), params: { user: { name: name, email: email, password: "", password_confirmation: "" } } assert_not flash.empty? assert_redirected_to @user @user.reload assert_equal name, @user.name assert_equal email, @user.email end end
formのパーシャル
<%= form_for(@user) do |f| %> <%= render 'shared/error_messages',object: @user %> <%= f.label :ニックネーム %> <%= f.text_field :name,class: 'form-control' %> <%= f.label :メールアドレス %> <%= f.email_field :email,class: 'form-control' %> <%= f.label :パスワード %> <%= f.password_field :password,class: 'form-control' %> <%= f.label :パスワードの確認 %> <%= f.password_field :password_confirmation,class:'form-control' %> <%= f.submit yield(:button_text),class:"btn btn-primary" %> <% end %>
editのhtml.erb
<% provide(:title, 'プロフィールの編集') %> <% provide(:button_text, '保存') %> <h1>プロフィールの編集 </h1> <div class="row"> <div class="col-md-6 col-md-offset-3"> <%= render 'layouts/form' %> <div class="gravatar_edit"> <%= gravatar_for @user %> <a href="http://gravatar.com/emails" target="_blank">Change</a> </div> </div> </div>
あなたの回答
tips
プレビュー