前提・実現したいこと
現在railsの学習をしており部屋の登録や予約をユーザーが行える機能を実装している最中です。
具体的に今実装したいこととしてgreenhouseモデルとreserverモデルを作成し、greenhouseモデルに部屋をいくつか登録してある状態なのですが、そこで登録してある部屋を選択し予約ページに遷移した時に選択した部屋のイメージ画像を予約ページでも表示したいということです。
行った手順としては
1 greenhouseモデルとreserverモデルを1:1で関係づけた(greenhouseモデルの方にhas_one :reserver, reserverモデルの方に belongs_to :greenhouseの記述済みです)
2 reserversコントローラーのindex,newに@greenhouse = Greenhouse.all,.newをそれぞれ記述
3 reservers/new.html.erbに
<tr> <td> <%=image_tag @greenhouse.image %> </td> </tr> 記述済みです。 ### 発生している問題・エラーメッセージArgumentError in Reservers#new Can't resolve image into URL: undefined method `persisted?' for nil:NilClass
該当のソースコード
rails
1class ReserversController < ApplicationController 2 def index 3 @reservers = Reserver.all 4 @greenhouse = Greenhouse.all 5 end 6 7 def new 8 @reserver = Reserver.new 9 @greenhouse = Greenhouse.new 10 end 11 12 def create 13 @reserver = Reserver.new(params.require(:reserver).permit(:start, :end, :number, :total, :user_id)) 14 if @reserver.save 15 flash[:notice] = "新規予約をしました" 16 redirect_to action: :index 17 else 18 render :new 19 end 20 end 21 22 def show 23 @reserver = Reserver.find(params[:id]) 24 end 25 26 def edit 27 @reserver = Reserver.find(params[:id]) 28 end 29 30 def update 31 @reserver = Reserver.find(params[:id]) 32 if @reserver.update(params.require(:reserver).permit(:start, :end, :number, :total, :user_id)) 33 flash[:notice] = "投稿を更新しました" 34 redirect_to :reservers 35 else 36 render "edit" 37 end 38 end 39 40 def destroy 41 @reserver = Reserver.find(params[:id]) 42 @reserver.destroy 43 flash[:notice] = "投稿を削除しました" 44 redirect_to :reservers 45 end 46end
rails
1#new.html.erb 2<h3>新規予約</h3> 3 4 <%= render "shared/error", obj: @reserver %> 5 6 <%= form_for @reserver do |f| %> 7 <table> 8 <tr> 9 <td> 10 <%=image_tag @greenhouse.image %> 11 </td> 12 </tr> 13 14 <tr> 15 <th><%= f.label :開始日 %></th> 16 <td><%= f.date_field :start, class:"start-content" %></td> 17 </tr> 18 19 <tr> 20 <th><%= f.label :終了日 %></th> 21 <td><%= f.date_field :end, class:"end-content" %></td> 22 </tr> 23 24 <tr> 25 <th><%= f.label :人数 %></th> 26 <td><%= f.number_field :number, class:"number-content" %></td> 27 </tr> 28 </table> 29 <div> 30 <ul> 31 <li><%= f.submit "予約を完了する" %></li> 32 </ul> 33 </div> 34 <% end %> 35 36 <div> 37 <ul> 38 <li><%= link_to "予約一覧に戻る", :reservers %></li> 39 </ul> 40 </div>
試したこと
image_tagの記述をなくした所入力のフォームの箇所に#ActiveStorage::Attached::One:0x00007fc2f44e2e60と記述があったので画像のURLのようなものはありました。
補足情報(FW/ツールのバージョンなど)
aws cloud9
rails 6.1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。