前提・実現したいこと
Railsで作ったレシピ投稿アプリをherokuへデプロイしました。
「レシピ投稿→成功→ユーザー画面に遷移、失敗→レシピ投稿画面に戻す」を実現したいです。
実装した投稿機能は、PC上では正常に動きます。
しかしなぜかiPhone上だと、データベースへの保存は無事成功し、画面遷移だけ失敗します。
発生している問題・エラーメッセージ
https://~~/recipes/create
「We're sorry, but something went wrong.」
と出ます。
エラーメッセージは確認できませんでした。
該当のソースコード(必要な箇所だけ抜粋しています)
ルーティング
routes.rb
Ruby
1 get "/recipes/new" => "recipes#new" 2 post "/recipes/create" => "recipes#create" 3 get "/recipes/:id" => "recipes#show"
コントローラー
recipes_controller.rb
Ruby
1 @recipe = Recipe.new( 2 title: params[:title], 3 comment: params[:comment], 4 category: params[:category], 5 minutes: params[:minutes], 6 user_id: @current_user.id 7 ) 8 9 #省略 10 11 if @recipe.save 12 redirect_to("/users/#{@user.id}") 13 else 14 render("recipes/new") 15 end
ビュー
recipes/new.html.erb
<%= form_tag("/recipes/create", {multipart: true}) do %> <h3>Step1</h3> <section> <p>タイトルをいれる</p> <textarea name="title" class="title-window"></textarea> <p>写真をいれる</p> <input class="img-window" type="file" name="top_image"> </section> #省略 <p>おすすめポイント</p> <textarea class="comment" name="comment"></textarea> </section> <input class="recipe-submit" type="submit" value="投稿する"> <% end %>
モデル
recipe.rb
Ruby
1class Recipe < ApplicationRecord 2 3 def user 4 return User.find_by(id: self.user_id) 5 end 6 7end
試したこと
恐らくですが、レシピ投稿後に、/recipes/createパスによる"recipes#create"アクションが再度実行され、paramsを持たないフォームが送信されてしまって(あるいはpostメソッドだから)エラーが発生しているようです。
実際そうだとして、なぜ(PC上では正常に動くのに)iPhoneではエラーが発生するのかわからず解消できずにいます。
Herokuの特性によるものだと思い「Heroku iPhone エラー」などと調べてみましたが、該当するものは見つかりませんでした。
ご存知の方いらっしゃればよろしくお願いします。
補足情報
説明不足な点ございましたら、お手数ですがご指摘いただけると嬉しいです。
ruby 2.5.0
Rails 5.2.1
heroku 7.16.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。