前提・実現したいこと
タイトルに記載しました、 permitted:falseのエラーでつまずいています。
調べてみると、ストロングパラメータの記載に問題があるのだということが分かったのですが、
下記に記載している通り、users_controller.rbの下部(private)にparams.requireを追記したのですが変わりません。
ご教授のほど、よろしくお願いいたします!!
発生している問題・エラーメッセージ
permitted: false
該当のソースコード
<ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"0nEBSbJ5+7+dhMOi8avmT7lpopkdZgqIFGreJnWP2alMQ+dMH/TKIMi8y+YM/ZXf/JI8WQBJJ3AIKesxe0KTpA==", "name"=>"べべべ", "image"=>#<ActionDispatch::Http::UploadedFile:0x00007f86e0469538 @tempfile=#<Tempfile:/var/folders/4j/366dq7y542n_xt2k1d5bq32w0000gn/T/RackMultipart20201014-2391-13b8a4d.png>, @original_filename="スクリーンショット 2020-10-02 18.16.34.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"image\"; filename=\"\xE3\x82\xB9\xE3\x82\xAF\xE3\x83\xAA\xE3\x83\xBC\xE3\x83\xB3\xE3\x82\xB7\xE3\x83\xA7\xE3\x83\x83\xE3\x83\x88 2020-10-02 18.16.34.png\"\r\nContent-Type: image/png\r\n">, "bgimage"=>#<ActionDispatch::Http::UploadedFile:0x00007f86e0490e58 @tempfile=#<Tempfile:/var/folders/4j/366dq7y542n_xt2k1d5bq32w0000gn/T/RackMultipart20201014-2391-1exzwwp.jpg>, @original_filename="sean-o-KMn4VEeEPR8-unsplashのコピー.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"bgimage\"; filename=\"sean-o-KMn4VEeEPR8-unsplash\xE3\x81\xAE\xE3\x82\xB3\xE3\x83\x92\xE3\x82\x9A\xE3\x83\xBC.jpg\"\r\nContent-Type: image/jpeg\r\n">, "intro"=>"かか", "controller"=>"users", "action"=>"update", "id"=>"3"} permitted: false>
ソースコード
rails
1class UsersController < ApplicationController 2 3 before_action :set_user, only: [:show,:update,:edit,:delete] 4 def new 5 @user = User.new 6 end 7 8 def create 9 @user = User.new(name: params[:name], email: params[:email], password: params[:password], image: "emma-smith-NS_DMD4rEjk-unsplash.jpg", bgimage: "自然壁画.jpg") # 実装は終わっていないことに注意! 10 # binding.pry 11 if @user.save 12 session[:user_id] = @user.id 13 flash[:success] = "Welcome to this app!" 14 redirect_to("/home/about") 15 else 16 flash[:notice] = "Your email is already existed" 17 render 'users/new' 18 end 19 end 20 21 def show 22 @users = User.find_by(id: params[:id]) 23 # binding.pry 24 end 25 26 def edit 27 @users = User.find_by(id: params[:id]) 28 29 end 30 31 def update 32 33 @users = User.find_by(id: params[:id]) 34 @users.name = params[:name], 35 @users.image = params[:image], 36 @users.bgimage = params[:bgimage], 37 @users.intro = params[:intro] 38 39 if @users.save 40 # binding.pry 41 flash[:notice] = "編集しました" 42 redirect_to("/users/#{@users.id}/show") 43 else 44 render("/home/about") 45 46 end 47 48 end 49 50 def login_form 51 end 52 53 def login 54 @user = User.find_by(email: params[:email]) 55 if @user && @user.authenticate(params[:password]) 56 session[:user_id] = @user.id 57 flash[:success] = "welcome Back" 58 redirect_to ("/home/about") 59 else 60 @error_message = "Wrong email or password" 61 @email = params[:email] 62 @password = params[:password] 63 render("/users/login_form") 64 end 65 end 66 67 def logout 68 session[:user_id] = nil 69 flash[:notice] = "Logout" 70 redirect_to("/home/about") 71 end 72 73 74 private 75 76 77 def user_params 78 params.require(:user).permit(:name, :image, :bgimage, :intro) 79 end 80 81def set_user 82 #特定データの取得 83 @user = User.find_by(params[:id]) 84 end 85end 86
erb
1<div class="edit_profile-wrapper"> 2<%= @users.name %> 3<%= form_tag("/users/#{@users.id}/update", {multipart: true}) do %> 4 5<div class="edit_profile-contents"> 6 <p>名前</p> 7 <label for="name"></label> 8 <input type="text" name="name" value="<%=@users.name%>" required> 9 </div> 10<div class="edit_profile-contents"> 11 <p>メインアイコン</p> 12 <label for="image_name"></label> 13 <input type="file" name="image"> 14 </div> 15<div class="edit_profile-contents"> 16 <p>背景画像</p> 17 <label for="image_name"></label> 18 <input type="file" name="bgimage"> 19 </div> 20 <div class="edit_profile-contents"> 21 <p>自己紹介文</p> 22 <textarea class="input-text" type="text" placeholder=" enter your introduction!" name="intro" value="<%=@users.intro%>"></textarea> 23 </div> 24 <input type="submit" value="submit" class="btn btn-border-shadow btn-border-shadow--color2"> 25 26<%end%> 27</div>
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
エラーは全て記載してください。
また質問のコードは<code>タグを利用して見やすくしてください。
現状のコードだけだと引数4つ与えてるのは一ヶ所しかないようですが、そのあたりは認識されてますか?
「引数が1つのメソッドなのに、引数が4つも書かれてます。引数の個数が合いません。」というエラーメッセージですから、メソッドの定義を確認して、引数を1つにすれば質問に書かれたエラーは消えると思います。
それで、質問者が意図した動作になるかどうかは判りませんが。
m.ts10806さんが指摘されているように、質問のコードで4つの引数が与えられているメソッドは、"@users.update"だけですから、このメソッドの定義を起点に調べていくのが良いと思います。
みなさま、情報量が足りない中ご指摘ありがとうございます!!
コードの書き方を直してみると新たなエラーが発生したので新たに質問記事を作成したいと思います!!
質問は編集できるので新たに投稿するのではなく当投稿を編集してください。
あとコードやエラーはマークダウンのcode機能を利用してご提示ください。
https://teratail.com/questions/238564
うーん・・回答ついてないとはいえ・・・ごっそり変わるのも、ちょっと。
2020/10/14 21:51 のコメントだけだと元の現象が解決したかどうか分からなかったので「編集して」と依頼しましたが、解決したのでしたら自己解決にした方が良かったかもしれませんね。
そうですよね。。内容変わりすぎるから編集になるのかなあと思いつつでしたがやはりこれは新たな質問になりますよね。。次回以降気をつけます!ご指摘ありがとうございます!!
編集した記事の前に書いていた質問に関しては、解決しました!
あなたの回答
tips
プレビュー