質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

2回答

1601閲覧

railsにおけるディレクトリもしくはファイルのエラー

tan1

総合スコア1

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2022/03/22 13:24

edit.html.erbファイル内の保存ボタンを押すと以下のエラーが出ます。

Errno::ENOENT in UsersController#update
No such file or directory @ rb_sysopen - /home/ec2-user/environment/subako/public/images/user_images/1.jpg

エラーの場所はusers_controller.rbファイル内の下記です。

File.binwrite("/home/ec2-user/environment/subako/public/images/user_images/#{@current_user.user_image}", image.read)

public/images/user_imagesというディレクトリは存在しており、ファイルも存在しています。

users_controller.rb

1class UsersController < ApplicationController 2 def show 3 @user = User.find_by(id: params[:id]) 4 end 5 6 def new 7 @user = User.new 8 end 9 10 def create 11 @user = User.new( 12 user_name: params[:user][:user_name], 13 email: params[:user][:email], 14 password: params[:user][:password], 15 password_confirm: params[:user][:password_confirm], 16 user_image: "default.jpg" 17 ) 18 if params[:user][:password] == params[:user][:password_confirm] && @user.save! 19 session[:user_id] = @user.id 20 flash[:notice] = "ユーザー登録が完了しました" 21 redirect_to("/users/#{@user.id}") 22 else 23 render("users/new") 24 end 25 end 26 27 def edit 28 end 29 30 def update 31 @current_user.user_name = params[:user][:user_name] 32 @current_user.intro = params[:user][:intro] 33 if params[:user][:user_image] 34 @current_user.user_image = "#{@current_user.id}.jpg" 35 image = params[:user][:user_image] 36 File.binwrite("/home/ec2-user/environment/subako/public/images/user_images/#{@current_user.user_image}", image.read) 37 end 38 if @current_user.save! 39 redirect_to("/users/#{@current_user.id}") 40 flash[:notice] = "変更しました" 41 else 42 redirect_to("/users/#{@current_user.id}") 43 flash[:notice] = "変更に失敗しました" 44 end 45 end 46 47 def login_form 48 end 49 50 def login 51 @user = User.find_by(email: params[:email]) 52 if @user && @user.authenticate(params[:password]) 53 session[:user_id] = @user.id 54 flash[:notice] = "ログインしました" 55 redirect_to("/rentals/top") 56 else 57 @error_message = "メールアドレスかパスワードが間違っています" 58 @email = params[:email] 59 @password = params[:password] 60 render("users/login_form") 61 end 62 end 63 64 def logout 65 session[:user_id] = nil 66 flash[:notice] = "ログアウトしました" 67 redirect_to("/rentals/top") 68 end 69end 70

edit.html.erb

1 <nav class="navbar navbar-expand-lg navbar-dark bg-dark flex-column col-3 left-nav"> 2 <a class="navbar-brand" href="/rentals/top"></a> 3 <ul class="navbar-nav flex-column"> 4 <li class="nav-item"> 5 <%=link_to "アカウント設定", account_path, class: "nav-link", visible: true %> 6 </li> 7 <li class="nav-item"> 8 <%=link_to "ユーザー設定", user_path(@current_user.id), class: "nav-link", visible: false %> 9 </li> 10 </ul> 11</nav> 12<div class="main users-edit users-right col-9"> 13 <div class="container col-6 mt-"> 14 <div class="form-heading">ユーザ情報編集</div> 15 <div class="form users-form"> 16 <div class="form-body"> 17 <% @user.errors.full_messages.each do |message| %> 18 <div class="form-error"> 19 <%= message %> 20 </div> 21 <% end %> 22 <%= form_with model: @current_user, local:true, method: :patch do |f| %> 23 <div class"form-group"> 24 <label>画像</label> 25 <%= f.file_field:user_image, class: "form-control" %> 26 </div> 27 <div class"form-group"> 28 <label>ユーザ名</label> 29 <%= f.text_field:user_name, class: "form-control" %> 30 </div> 31 <div class"form-group"> 32 <label>自己紹介</label> 33 <%= f.text_area:intro, class: "form-control" %> 34 </div> 35 <div class"form-group"> 36 <%= f.submit "保存", class: "btn btn-primary" %> 37 </div> 38 <% end %> 39 </div> 40 </div> 41 </div> 42</div> 43<div class="clear"></div> 44

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

No such file or directory @ rb_sysopen - /home/ec2-user/environment/subako/public/images/user_images/1.jpg

このファイルがない、とおっしゃってます。
この表示されてる場所にそのファイルはあるんでしょうか

投稿2022/03/22 13:54

y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

エラーメッセージと ここでエラーです という場所との関係が???です。

エラーメッセージは fileがない と言ってます。
でも
エラーが起きたのが File.binwrite だとすると、それは書き出しですから fileが無い方が自然です。
上書きもあるでしょうから、fileがある場合もあるでしょうが。

エラーメッセージを翻訳するのではなく、全文載せてみてください。

投稿2022/03/22 22:49

winterboum

総合スコア23329

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問