I am creating an app while looking at the Progate rails course.I'm stuttering to upload my profile picture.I brought the code exactly as it is from the Progate, but it doesn't work.
I've never seen an error statement before, so I don't understand it well even if I look it up.It has stopped here for more than half a day.
What I want to do is
Save image to public/user_images
Display the saved image on the profile page (you can change the image for each user)
That's it.
Please let me know.
home_controller.rb
def update_user
@user=User.find_by (id:params[:id])
@uu ser.name=params[:name]
@user.email=params[:email]
if params [:image]
@user.image_name="#{@user.id}.jpg"
image=params[:image]
File.binwrite("public/user_images/#{@user.image_name}", image.read)
end
[email protected]
flash[:notice] = "User information edited"
redirect_to("/")
end
end
def profile
@user=User.find_by (id:params[:id])
@post=Post.find_by (id:params[:id])
@likes=Like.where(user_id:@uu-ser.id)
end
routes.rb
Rails.application.routes.drawdo
get "home/test" = > "home#barbajs"
get":id/edit_profile"=>"home#edit_profile"
get "account /:id/edit" = > "home#edit_account"
post "user/:id/update" = > "home#update_user"
get 'pay/payment'
device_for —users
get "home/:id/likes" = > "home#likes"
post "like/:post_id/create" =>"like#create"
post "like/:post_id/destroy" =>"like#destroy"
root'home#index'
get "home/new_fc" = > "home#new_fc"
post "home/create" = > "home#create"
get "home/profile/:id" = > "home#profile"
get":id/show_fc"=>"home#show_fc"
get":id/edit_fc"=>"home#edit_fc"
post":id/update_fc"=>"home#update_fc"
post": id/fc/destroy"=>"home#destroy"
get":id/setting"=>"home#setting"
get "pay" = > "pay#payment"
get "home/new_fc_content" = > "home#new_fc_content"
post "home/content_create" = > "home#content_create"
end
edit_profile.html.erb (Edit Profile Page)
<h3>Edit Profile</h3>
<%=form_tag("/user/#{current_user.id}/update", {multipart:true})do%>
<p>Username</p>
<textarea name="name" class="textbox">%=current_user.name%></textarea>
<li>Change self-introduction</li>
<li>Change profile picture</li>
<p>Image </p>
<input name="image" type="file">
<input type="submit" value="Now you're done!" class="btn btn-light-green btn-size-large">
<%end%>
profile.html.erb (profile page)
<div class="main">
<h2><%=@u ser.name%>/h2>
<img src="<%="/user_images/#{@user.image_name}"%>">
<table>
<tr>
<th>Fan Club General Members</th>
<th>Number of fan clubs joined</th>
</tr>
<tr>
<td>11</td>
<td>20</td>
</tr>
</table>
Is a directory
error stating that you tried to open a file, but it was a directory.
The direct cause is that the filename you tried to open is public/user_images/
, as shown in the screenshot.
In other words,
File.binwrite("public/user_images/#{@user.image_name}", image.read)
In this part, I think @user.image_name
is "
or nil
.
I don't know more about the User class code because it's not in the questionnaire
If the user class image_name
or image_name=
methods are self-created methods, why don't you double-check these codes?
© 2024 OneMinuteCode. All rights reserved.