フォームの内容を更新したら、@member.saveできるようにしたいのですがこのようなエラーが出てしまいます。
ArgumentError (When assigning attributes, you must pass a hash as an argument, NilClass passed.
def update @member =current_member @member.assign_attributes(params[:account]) if @member.save redirect_to :account, notice: "アカウント情報を更新しました。" else render "edit" end end
rb
1<%= render "shared/errors", obj: @member %> 2<table class="attr"> 3 <tr> 4 <th><%= form.label :name %></th> 5 <td><%= form.text_field :name %></td> 6 </tr> 7 <tr> 8 <th><%= form.label :birthday, 9 for: "member_birthday_li"%></th> 10 <td><%= form.date_select :birthday, 11 start_year: 1970, end_year: Time.current.year, 12 use_month_numbers: true%></td> 13 </tr> 14 <% if controller.kind_of?(MembersController)%> 15 <tr> 16 <th><%= form.label :email %></th> 17 <td><%= form.text_field :email %></td> 18 </tr> 19 <tr> 20 <th><%= Member.human_attribute_name(:administrator) %></th> 21 <td> 22 <%= form.check_box :administrator %> 23 <%= form.label :administrator %> 24 </td> 25 </tr> 26 <%end%> 27</table>
###試したこと
@member.assign_attributes(params[:account])の部分を決してみたら、@member.saveできたので問題は@member.assign_attributes(params[:account])にあるかと推測します。
viewのcodeもしくはこのエラーのときのlogを見せて下さい。
両方がいいかな
<% @page_title = "マイアカウント情報の編集"%>
<h1><%= @page_title%></h1>
<div class="toolbar"><%= link_to "マイアカウントに戻る", :account%></div>
<%= form_with model: @member, as: "account" do |form|%>
<%= render "shared/member_form", form: form %>
<div><%= form.submit %></div>
<%end%>
どうやら今確認したらできているみたいです!おさわがせしました!
成功してませんでした。。。
form_forに戻したら同じようなエラーが出ました。form_withだと指定のコントローラーに飛んでくれてなかったみたいです。
shared/member_form と エラーが起きた時のlogを見せて下さい
app/controllers/accounts_controller.rb:14:in `update'
Started PATCH "/account" for 127.0.0.1 at 2019-12-14 22:23:24 +0900
(0.1ms) SELECT sqlite_version(*)
Processing by AccountsController#update as JS
Parameters: {"authenticity_token"=>"Zjm+1CdwOgxpLKeu1BpPzVYdFjWFvvkdxxhd4HTkj4Los7PkHb2KnPqTkvTCU+0SxMw==", "member"=>{"name"=>"ski", "birthday(1i)"=>"2001", "birthday(2i)"=>"7", "birthday(3i)"=>"13"}, "commit"=>"更新する"}
Member Load (0.2ms) SELECT "members".* FROM "members" WHERE "members"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
↳ app/controllers/application_controller.rb:4:in `current_member'
CACHE Member Load (0.0ms) SELECT "members".* FROM "members" WHERE "members"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
↳ app/controllers/application_controller.rb:4:in `current_member'
"0909090"
Completed 500 Internal Server Error in 9ms (ActiveRecord: 0.8ms | Allocations: 8511)
ArgumentError (When assigning attributes, you must pass a hash as an argument, NilClass passed.):
app/controllers/accounts_controller.rb:14:in `update'
こちらでしょうか?
回答2件
あなたの回答
tips
プレビュー