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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Ruby on Rails

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

966閲覧

Rails6のSJRでエラーメッセージを作成したらmissing a template for this request format and variant.と怒られる

takesoo

総合スコア13

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

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

Ruby on Rails

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/05/03 12:33

編集2021/05/05 02:08

起きていること

タイトルの通り、Rails6にてform_withでレコードをcreateする処理のバリデーションエラーをSJRで返すように実装したのだが、'text/html'フォーマットがないぞと怒られた

EventsController#create is missing a template for this request format and variant. request.formats: ["text/html"] request.variant: []

SJRってrailsがよしなに空気読んでJavaScript返してくれるという認識なんですが違うのでしょうか?
webpackerとかの絡みもあるのかなーと思ってるのですがあまり仕組みを理解できていないので困っております
関係ありそうなソースコードは以下に挙げてみましたがその他に必要そうなものがあればコメントで指示していただけるとありがといです
よろしくお願いします

関連コード

ruby

1# views/events/new.html.haml 2 3- now = Time.zone.now 4 5%h1.mt-2 イベント作成 6 7= form_with(model: @event, class: 'form_horizontal') do |f| 8 #errors 9 .form-group 10 = f.label :name 11 = f.text_field :name, class: 'form-control' 12 .form-group 13 = f.label :place 14 = f.text_field :place, class: 'form-control' 15 .form-group 16 = f.label :start_at 17 %div 18 = f.datetime_select :start_at, start_year: now.year, end_year: now.year + 1 19 .form-group 20 = f.label :end_at 21 %div 22 = f.datetime_select :end_at, start_year: now.year, end_year: now.year + 1 23 .form-group 24 = f.label :content 25 = f.text_area :content, class: 'form-control', row: 10 26 = f.submit class: 'btn btn-primary'

ruby

1# /views/application/_errors.html.haml 2.alert.alert-danger 3 %ul.mb-0 4 - errors.full_messages.each do |message| 5 %li= message

ruby

1# /views/events/create.js.erb 2document.getElementById("errors").innerHTML = "<%= j render("errors", errors: @event.errors) %>"

ruby

1# /views/layouts/application.html.haml 2!!! 3%html 4 %head 5 %meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/ 6 %title AwesomeEvents 7 -# %meta{:content => "width=device-width,initial-scale=1", :name => "viewport"}/ 8 = csrf_meta_tags 9 = csp_meta_tag 10 = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' 11 = javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' 12 %body 13 %header.navbar.navbar-expand-sm.navbar-light.bg-light 14 .container 15 = link_to 'AwesomeEvents', root_path, class: 'navbar-brand' 16 %ul.navbar-nav 17 %li.nav-item 18 = link_to('イベントを作る', new_event_path, {class: 'nav-link'}) 19 - if logged_in? 20 %li.nav-item 21 = link_to 'ログアウト', logout_path , class: 'nav-link', method: :delete 22 - else 23 %li.nav-item 24 = link_to 'GitHubでログイン', '/auth/github', class: 'nav-link', method: :post 25 .container 26 - if flash.notice 27 .alert.alert-success 28 = flash.notice 29 - if flash.alert 30 .alert.alert-danger 31 = flash.alert 32 = yield 33

ruby

1# /controllers/events_controller.rb 2class EventsController < ApplicationController 3 def new 4 @event = current_user.created_events.build 5 end 6 7 def create 8 @event = current_user.created_events.build(event_params) 9 if @event.save 10 redirect_to @event, notice: '作成しました' 11 end 12 end 13 14 private 15 16 def event_params 17 params.require(:event).permit( 18 :name, :place, :content, :start_at, :end_at 19 ) 20 end 21end

ruby

1# /models/event.rb 2class Event < ApplicationRecord 3 validates :name, presence: true, length: {maximum: 50} 4 validates :place, presence: true, length: {maximum: 100} 5 validates :content, presence: true, length: {maximum: 2000} 6 validates :start_at, presence: true 7 validates :end_at, presence: true 8 validate :start_at_should_be_before_end_at 9 10 private 11 12 def start_at_should_be_before_end_at 13 return unless start_at && end_at # start_atとend_atが両方nullならreturn 14 15 if start_at >= end_at 16 errors.add(:start_at, 'は終了時間よりも前に設定してください') 17 end 18 end 19 20end 21

試したこと

formatを*/*に指定するとtext/javascript返すがそのままブラウザに平文がレンダリングされた

ruby

1= form_with(model: @event, class: 'form_horizontal', format: */*) do |f|

イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問