実現したいこと
ここに実現したいことを箇条書きで書いてください。
ActionView::SyntaxErrorInTemplateが出る原因が分かりません。
前提
ここに質問の内容を詳しく書いてください。
railsで宿泊管理アプリを作成しており、その中で写真をアップロードするフォームを作成しています。
その中で <%= form_with %>にurlをつけると表題のエラーが発生します。その原因が分かりません
発生している問題・エラーメッセージ
Encountered a syntax error while rendering template SyntaxError: /Users/Shin/RAILS/ver.7/hotel3/app/views/rooms/photo_upload.html.erb:10: syntax error, unexpected local variable or method, expecting `end' ...nd= form_with model: @room url: photo_upload_room_path do |... ... ^~~
該当のソースコード
photo_upload.html.erb
1<div class="container mt-4"> 2 <div class="row"> 3 <div class="col-md-3"> 4 <%= render 'room_menu' %> 5 </div> 6 <div class="col-md-9"> 7 <div class="card"> 8 <div class="card-body"> 9 <h4 class="mt-4 mb-4"><b>写真アップロード</b></h4> 10 <%= form_with model: @room url: photo_upload_room_path do |f| %> 11 <% if @room.photo.attached? %> 12 <%= image_tag url_for(@room.photo) %> 13 <% end %> 14 15 <%= f.file_field :photo %> 16 <%= f.submit %> 17 <% end %> 18 19 <div> 20 <%= button_to '削除', delete_photo_room_url, method: :delete,data: { confirm: "本当に削除してよろしいですか?" },style: "z-index: 100;",class: "btn btn-outline-danger btn-sm" %> 21 </div> 22 23 </div> 24 </div> 25 </div> 26 </div> 27</div>
rooms_controller.rb
1 class RoomsController < ApplicationController 2 3 protect_from_forgery except: [:upload_photo] 4 5 before_action :set_room, except: [:index, :new, :create] 6 before_action :authenticate_user!, except: [:show] 7 before_action :is_authorised, only: [:listing, :pricing, :description, :photo_upload, :amenities, :location, :update] 8 9 10 def index 11 @rooms = current_user.rooms 12 end 13 14 def new 15 @room = current_user.rooms.build 16 end 17 18 def create 19 @room = current_user.rooms.build(room_params) 20 if @room.save 21 redirect_to listing_room_path(@room), notice: "保存しました。" 22 else 23 flash[:alert] = "問題が発生しました。" 24 render :new 25 end 26 end 27 def show 28 @photo = @room.photo 29 @i = 0 30 end 31 32 def listing 33 end 34 35 def pricing 36 end 37 38 def description 39 end 40 41 def amenities 42 end 43 44 def location 45 end 46 47 def update 48 new_params = room_params 49 new_params = room_params.merge(active: true) if is_ready_room 50 51 if @room.update(new_params) 52 flash[:notice] = "保存しました。" 53 else 54 flash[:alert] = "問題が発生しました。" 55 end 56 redirect_back(fallback_location: request.referer) 57 end 58 59 60 61 def photo_upload 62 @room.photo.attach(params[:file]) 63 if @room.photo.update(params[:file]) 64 flash[:notice] = '写真を更新しました' 65 redirect_to @user 66 else 67 flash[:notice] = '写真の更新に失敗しました' 68 render 'photo_upload' 69 end 70 end 71 72 def delete_photo 73 @room = Room.find(params[:id]) 74 @room.photo.purge 75 redirect_to photo_upload_room_path(@room) 76 end 77 def preload 78 today = Date.today 79 reservations = @room.reservations.where("start_date >= ? OR end_date >= ?", today, today) 80 render json: reservations 81 end 82 # 予約 終了日のAJAX処理 83 def preview 84 start_date = Date.parse(params[:start_date]) 85 end_date = Date.parse(params[:end_date]) 86 output = { 87 conflict: is_conflict(start_date, end_date, @room) 88 } 89 render json: output 90 end 91 92 93 94 private 95 def set_room 96 @room = Room.find(params[:id]) 97 end 98 def room_params 99 params.require(:room).permit(:home_type, :room_type, :accommodate, :bed_room, :bath_room, :listing_name, :summary, :address, :is_tv, :is_kitchen, :is_air, :is_heating, :is_internet, :price, :active, :description, :photo) 100 end 101 102 def is_authorised 103 redirect_to root_path, alert: "権限がありません。" unless current_user.id == @room.user_id 104 end 105 106 def is_ready_room 107 !@room.active && !@room.price.blank? && !@room.listing_name.blank? && !@room.address.blank? &&!@room.photo.empty? 108 end 109 def is_conflict(start_date, end_date, room) 110 check = room.reservations.where("? < start_date AND end_date < ?", start_date, end_date) 111 check.size > 0? true : false 112 end 113 114end 115
room.rb
1class Room < ApplicationRecord 2 belongs_to :user 3 has_many :reservations 4 5 has_one_attached :photo 6 7 validates :home_type, presence: true 8 validates :room_type, presence: true 9 validates :accommodate, presence: true 10 validates :bed_room, presence: true 11 validates :bath_room, presence: true 12 13 def self.ransackable_attributes(auth_object = nil) 14 %w[listing_name] 15 end 16end 17
試したこと
urlの記載に間違いがないか、routeingに間違いがないかなどは確認しました。
また、urlの部分を削除すると問題なく起動されるのも確認できています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2025/01/11 14:38