https://www.sejuku.net/blog/65175のサイトで画像アップロードを実装していましたがエラーが出ました。
少し前、似たような質問をしましたが、(https://teratail.com/questions/218253)解決できませんでした。
error
1ActionView::Template::Error (Nil location provided. Can't build URI.): 2 20: <%= @ugblog.avatar_path %> 3 21: </p> 4 22: <p> 5 23: <%= image_tag @ugblog.avatar_path.url %> 6 24: </p> 7 25: 8 26: <%= link_to '修正', edit_ugblog_path(@ugblog) %> | 9 10app/views/ugblogs/show.html.erb:23:in `_app_views_ugblogs_show_html_erb__349685954_118284500'
formhtmlerb
1<%= form_with(model: ugblog, local: true) do |form| %> 2 <% if ugblog.errors.any? %> 3 <div id="error_explanation"> 4 <h2><%= pluralize(ugblog.errors.count, "error") %> prohibited this ugblog from being saved:</h2> 5 6 <ul> 7 <% ugblog.errors.full_messages.each do |message| %> 8 <li><%= message %></li> 9 <% end %> 10 </ul> 11 </div> 12 <% end %> 13 14 <div class="field"> 15 <div><%= form.label :タイトル %></div> 16 <div><%= form.text_area :title, {cols:40} %></div> 17 </div> 18 19 <div class="field"> 20 <div><%= form.label :サブタイトル %></div> 21 <div><%= form.text_area :subtitle, {cols:40, rows:5} %></div> 22 </div> 23 24 <div class="field"> 25 <div><%= form.label :本文 %></div> 26 <div><%= form.text_area :Text, {cols:40, rows:10} %></div> 27 </div> 28 29 <div class="field"> 30 <div><%= form.label :写真 %></div> 31 <div><%= form.file_field :avatar_path, id: :ugblog_avatar_path %></div> 32 </div> 33 34 <div class="actions"> 35 <%= form.submit "投稿する" %> 36 </div> 37<% end %>
showhtmlerb
1<p id="notice"><%= notice %></p> 2 3<p> 4 <strong>タイトル:</strong> 5 <%= @ugblog.title %> 6</p> 7 8<p> 9 <strong>サブタイトル:</strong> 10 <%= @ugblog.subtitle %> 11</p> 12 13<p> 14 <strong>本文:</strong> 15 <%= @ugblog.Text %> 16</p> 17 18<p> 19 <strong>写真:</strong> 20 <%= @ugblog.avatar_path %> 21</p> 22<p> 23 <%= image_tag @ugblog.avatar_path.url %> 24</p> 25 26<%= link_to '修正', edit_ugblog_path(@ugblog) %> | 27<%= link_to 'トップページへ', ugblogs_path %>
indexhtmlerb
1<p id="notice"><%= notice %></p> 2 3<h2>みんなのブログ</h2> 4<table> 5<tr> 6<th><%= link_to '投稿する', new_ugblog_path %></th> 7<th><%= link_to 'ログアウト'.html_safe, destroy_user_session_path, method: :delete %></th> 8</tr> 9</table> 10<hr> 11<h2>投稿記事</h2> 12<table> 13 <thead> 14 <tr> 15 <th>タイトル</th> 16 <th>サブタイトル</th> 17 <th>本文</th> 18 <th colspan="3"></th> 19 </tr> 20 </thead> 21 22 <tbody> 23 <% @ugblogs.each do |ugblog| %> 24 <tr> 25 <td><%= ugblog.title.truncate(15) %></td> 26 <td><%= ugblog.subtitle.truncate(15) %></td> 27 <td><%= ugblog.Text.truncate(20) %></td> 28 <td><%= link_to '詳しく見る', ugblog %></td> 29 <td><%= link_to '編集', edit_ugblog_path(ugblog) %></td> 30 <td><a href="javascript:delData(<%= ugblog.id %>);">削除 31 </a></td> 32 </tr> 33 <% end %> 34 </tbody> 35</table> 36 37 38<br> 39 40 41<script> 42function delData(num){ 43 if (confirm('このデータを削除しますか?')){ 44 document.location = "/ugblogs/delete/" + num; 45 } 46 return false; 47} 48</script> 49 50<hr>
controller
1class UgblogsController < ApplicationController 2 layout 'ugblogs' 3 before_action :set_ugblog, only: [:show, :edit, :update, :destroy] 4 5 # GET /ugblogs 6 # GET /ugblogs.json 7 def index 8 @ugblogs = Ugblog.all.order('created_at desc').limit(3) 9 end 10 11 # GET /ugblogs/1 12 # GET /ugblogs/1.json 13 def show 14 end 15 16 # GET /ugblogs/new 17 def new 18 @ugblog = Ugblog.new 19 end 20 21 # GET /ugblogs/1/edit 22 def edit 23 end 24 25 # POST /ugblogs 26 # POST /ugblogs.json 27 def create 28 @ugblog = Ugblog.new(ugblog_params) 29 30 respond_to do |format| 31 if @ugblog.save 32 format.html { redirect_to @ugblog, notice: 'Ugblog was successfully created.' } 33 format.json { render :show, status: :created, location: @ugblog } 34 else 35 format.html { render :new } 36 format.json { render json: @ugblog.errors, status: :unprocessable_entity } 37 end 38 end 39 end 40 41 # PATCH/PUT /ugblogs/1 42 # PATCH/PUT /ugblogs/1.json 43 def update 44 respond_to do |format| 45 if @ugblog.update(ugblog_params) 46 format.html { redirect_to @ugblog, notice: 'Ugblog was successfully updated.' } 47 format.json { render :show, status: :ok, location: @ugblog } 48 else 49 format.html { render :edit } 50 format.json { render json: @ugblog.errors, status: :unprocessable_entity } 51 end 52 end 53 end 54 55 # DELETE /ugblogs/1 56 # DELETE /ugblogs/1.json 57 def destroy 58 @ugblog.destroy 59 respond_to do |format| 60 format.html { redirect_to ugblogs_url, notice: 'Ugblog was successfully destroyed.' } 61 format.json { head :no_content } 62 end 63 end 64 65 private 66 # Use callbacks to share common setup or constraints between actions. 67 def set_ugblog 68 @ugblog = Ugblog.find(params[:id]) 69 end 70 71 # Never trust parameters from the scary internet, only allow the white list through. 72 def ugblog_params 73 params.require(:ugblog).permit(:title, :subtitle, :Text, :avatar_path) 74 end 75end 76
rails sを再起動してもだめでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/04 09:01
2019/11/04 12:16