質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

解決済

【rails】form_forでremote:trueにしているのに、HTMLでリクエストされてしまう。

gogoackman3
gogoackman3

総合スコア109

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1回答

0評価

2クリップ

4283閲覧

投稿2016/11/07 14:31

編集2016/11/07 15:38

ゲーム画像を投稿するフォームを作成しています。

投稿項目は、①画像と②テキストと③ゲーム名の三つです。

ajaxでの実装にしたのですが、なぜか画像ありの場合だけ、HTMLでリクエストがされてしまいます。
環境:Rails 5.0.0.1

フォームとコントローラなどは以下の通りです。

▼フォーム(view)

ruby

= form_for(@post,html:{id:'post_form', class:'post_form_wrap', multipart: true}, remote: true) do |f| = render 'shared/error_messages', object: f.object .post_game p.selected_game.title_field = f.collection_select :game_id, current_user.following_games.all, :id, :title, prompt: 'ゲームを選択してください' .post_image p.selected_image.title_field div.camera_wrap = image_tag('camera.png',alt:'投稿',id:'camera_image') = f.file_field :image, accept: 'image/jpeg,image/png,image/gif',id: 'image_item' = f.hidden_field :image_cache - if @post.image? = image_tag @post.image.url ,id: 'post_image_data' - else p#preview No Image .post_text p.comment.title_field.clearfix span#comment_chara_count.chara_count = f.text_area :text, class: 'post_form text-counter', placeholder: 'コメント',data: { 'text-counter-tag': '#comment_chara_count', 'text-counter-max': 140 },rows: 4 ul#js_image_error.input_error .post_submit = f.submit '投稿',id: 'post_submit_btn'

▼controller

ruby

def create @post = current_user.posts.build(post_params) if @post.save @success = true else @success = false end render end

▼create.js.slim

ruby

- if @success == true | window.location.href = "/"; - else | $('#error_explanation').remove(); | $('.post_body').prepend(" #{ j(render 'shared/error_messages', object: @post )}");

▼画像を未選択でsubmitした場合のログ(問題なく、JS形式でリクエストされます。)

Started POST "/posts" for 10.0.2.2 at 2016-11-07 23:17:40 +0900 Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 Processing by PostsController#create as JS Parameters: {"utf8"=>"✓", "authenticity_token"=>"lZ7HUoMQ4QgWffdON8KNX/PlZaKlVjg4cxO4qvCqKdHG9KMVlzMgFAwjrX1JGL9pOFpOIWdix1WZeMladvtOew==", "post"=>{"game_id"=>"", "image_cache"=>"", "text"=>"testです"}, "commit"=>"投稿"} User Load (0.6ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 11 ORDER BY `users`.`id` ASC LIMIT 1 (0.1ms) BEGIN (0.1ms) ROLLBACK Rendering posts/create.js.slim Rendered shared/_error_messages.html.slim (3.1ms) Rendered posts/create.js.slim (8.9ms) Completed 200 OK in 25ms (Views: 15.0ms | ActiveRecord: 0.8ms)

▼何らかの画像を選択した状態でsubmitすると・・・なぜかHTML形式のリクエストに・・・

Started POST "/posts" for 10.0.2.2 at 2016-11-07 23:17:57 +0900 Cannot render console from 10.0.2.2! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 Processing by PostsController#create as HTML Parameters: {"utf8"=>"✓", "authenticity_token"=>"lZ7HUoMQ4QgWffdON8KNX/PlZaKlVjg4cxO4qvCqKdHG9KMVlzMgFAwjrX1JGL9pOFpOIWdix1WZeMladvtOew==", "post"=>{"game_id"=>"", "image"=>#<ActionDispatch::Http::UploadedFile:0x007f0c83af3098 @tempfile=#<Tempfile:/tmp/RackMultipart20161107-3362-vcr1e5.PNG>, @original_filename="20161005233954-1021557906.PNG", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"post[image]\"; filename=\"20161005233954-1021557906.PNG\"\r\nContent-Type: image/png\r\n">, "image_cache"=>"", "text"=>""}, "commit"=>"投稿"} User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 11 ORDER BY `users`.`id` ASC LIMIT 1 (0.1ms) BEGIN (0.1ms) ROLLBACK Completed 500 Internal Server Error in 12ms (ActiveRecord: 0.5ms) ActionView::MissingTemplate (Missing template posts/create, application/create with {:locale=>[:ja], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :slim, :coffee, :jbuilder]}. Searched in: * "/home/vagrant/gameparty/app/views" * "/home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/kaminari-0.17.0/app/views" * "/home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/devise-i18n-1.1.0/app/views" * "/home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/devise-4.2.0/app/views" ):

全てがHTML形式になってしまうのであれば、分かるのですが、画像を選択した場合だけなのが全く意味がわかりません。

打開策として、formに「format:'js'」と追記したところ、画像無しの場合は引き続き、問題なく、画像ありの場合は以下のjsが描画されてしまいます。

イメージ説明

どなたか、この事象の発生要因などがわかりませんでしょうか??

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。