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

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

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

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

Ruby on Rails

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

Q&A

1回答

1342閲覧

[Rails] 構文エラーを解消したい

shachihoko

総合スコア1

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/08/15 08:49

###実現したいこと
Ruby on Railsで入力フォームを作成(作成済み)し、その入力された内容をデータベースに保存しようとしています。実行すると以下のようなエラーが発生しました。解決策をご教授いただければ幸いです。

発生したエラーメッセージ

ActionView::SyntaxErrorInTemplate - Encountered a syntax error while rendering template: check

###ソースコード
book.html.erb

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>予約システム</title> </head> <body> <h1>予約フォーム</h1> <%= form_with model:@reservation do |f| %> <ul class = "foo"> <li> <%= f.label :name, name:"content", '氏名'%> <%= f.text_field :name, size:"40", autocomplete: 'off' %> </li> <li> <%= f.label :club, '部活名' %> <%= f.text_field :club, size:"40"%> </li> <li> <%= f.label :email, '連絡先' %> <%= f.text_field :email, size:"40", autocomplete: 'off' %> </li> <li> <%= f.label :leader, '部長名' %> <%= f.text_field :leader, size:"50"%> </li> <li> <%= f.label :adviser, '顧問名' %> <%= f.text_field :adviser, size:"50"%> </li> <li> <%= f.label :place, '場所' %> <%= f.text_field :place %> </li> <li> <%= f.label :time, '活動日時' %> <%= f.text_field :time %> </li> <li> <%= f.label :member, '活動人数' %> <%= f.text_field :member %> </li> <li> <%= f.label :purpose, '使用用途' %> <%= f.text_field :purpose, size:"80" %> </li> </ul> <div class="button_wrapper"> <a class="btn", href="/create"><%= f.submit "プレビュー画面へ"%></a> </div> <% end %> </body> </html>

home_controller.rb

class HomeController < ApplicationController def book @reservation = Reservation.all end def new @reservation = Reservation.new end def create @reservation = Reservation.new(content: reservation_params[:content]) if @reservation.save flash[:success] = "保存できました" #render 'book_preview' else flash[:danger] = "保存ができていません" #render '/' end redirect_to("/book_preview") end private #ストロングパラメータ def reservation_params params.requie(:reservation).permit(:name) end def edit @reservation = Reservation.find(params[:id]) end def update Reservation.find(params[:id]).update(reservation_params) end def book_preview end end

routes.rb

Rails.application.routes.draw do get "/" => "home#book" post "create" => "home#create" get "book_preview" => "home#book_preview" # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end

###補足・自分なりの考察
エラーメッセージの下の部分にbook.html.erbの構文が表示されていたのですが、book.html.erbはデータベースを設定する前に実行した時に問題なく動いていたので、エラーを出しているのは、home_controller.rbかなと考えています。調べながら見様見真似でソースコードを書いているのもあり、何がどう間違っているのかが分かりません。投げやりな質問になってしまい申し訳ありません。
###環境
MacOS Big Sur 11.4
MySQL Ver 8.0.23
Ruby on Rails Ver 6.1.3.2
Ruby Ver 2.7.2p137

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

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

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

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

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

guest

回答1

0

<%= f.label :name, name:"content", '氏名'%> ここかなぁ
と思ったのですが、
「データベースを設定する前に実行した時に問題なく動いていた」のですか?はて
動いていた ときから動かなくなるまでの間に、何をしましたか?
「データベースを設定した」ではなく、具体的なコマンドの手順を。

「エラーメッセージの下の部分にbook.html.erbの構文が表示されていた」とのことですが、その何行目とかの表示もなく、ただ ActionView::SyntaxErrorInTemplate の行だけですか?

投稿2021/08/15 12:12

winterboum

総合スコア23653

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

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

shachihoko

2021/08/15 13:08

ご回答ありがとうございます。 手順ですが、動いていたもののデータベースに反映されていなくて、テーブルの可視化ができるようにSequel Pro(バージョンが合わず今は使用していません)を使おうとして、接続できずに認証プラグインなどの設定を変更していたら、mysqlにログインできなくなり、アンインストールしました。再度インストールした後、アンインストールする前のマイグレーションファイルを削除しました。その後にデータベース(reserve)を作りました。次にユーザーを作成し、権限付与を行いました。作ったデータベースにreservationというテーブルを作成し、実行するとアクセスエラーが発生してdatabase.ymlのdevelopmentのdatabaseがreserve_system_developmentであるのをreserveに変更しました。次にマイグレーションエラーが発生し、マイグレーションファイルが二つ(drop_table_reservationsとcreate_reservations)ありまして、drop_table_reservationsの方のマイグレーションファイルを削除し、rails db:migrateでそのエラーは対処できた後に質問させていただいているエラーが発生しました。長くなってしまって読みにくいかもしれません。申し訳ありません。コマンドまでは思い出せなくて、何をしたかを書かせていただいたのですが、こんな感じでよろしいでしょうか。 長くなりますが、ターミナルに出力された全文を貼らせていただきます。 ActionView::SyntaxErrorInTemplate - Encountered a syntax error while rendering template: check <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>予約システム</title> </head> <body> <h1>予約フォーム</h1> <%= form_with model:@reservation do |f| %> <ul class = "foo"> <li> <%= f.label :name, name:"content", '氏名'%> <%= f.text_field :name, size:"40", autocomplete: 'off' %> </li> <li> <%= f.label :club, '部活名' %> <%= f.text_field :club, size:"40"%> </li> <li> <%= f.label :email, '連絡先' %> <%= f.text_field :email, size:"40", autocomplete: 'off' %> </li> <li> <%= f.label :leader, '部長名' %> <%= f.text_field :leader, size:"50"%> </li> <li> <%= f.label :adviser, '顧問名' %> <%= f.text_field :adviser, size:"50"%> </li> <li> <%= f.label :place, '場所' %> <%= f.text_field :place %> </li> <li> <%= f.label :time, '活動日時' %> <%= f.text_field :time %> </li> <li> <%= f.label :member, '活動人数' %> <%= f.text_field :member %> </li> <li> <%= f.label :purpose, '使用用途' %> <%= f.text_field :purpose, size:"80" %> </li> </ul> <div class="button_wrapper"> <a class="btn", href="/create"><%= f.submit "プレビュー画面へ"%></a> </div> <% end %> </body> </html>: Started POST "/__better_errors/ec1e0a12d5deb72e/variables" for ::1 at 2021-08-15 21:48:42 +0900 Since there is no EDITOR or BETTER_ERRORS_EDITOR environment variable, using Textmate by default.
winterboum

2021/08/15 22:49

その流れですとviewに関わる部分はなさそうですね、。。。 取り敢えず <%= f.label :name, '氏名'%> として立ち上がるか見てください
shachihoko

2021/08/16 05:06

このようなエラーが出ました、、、 NoMethodError - undefined method `to_model' for #<ActiveRecord::Relation []> Did you mean? to_xml:
shachihoko

2021/08/16 13:11

<%= form_with model:@reservation do |f| %> 指定されているのはここでした。
winterboum

2021/08/16 20:47

@reservation が空なのですね。 このviewを呼び出しているactionを確認してください
shachihoko

2021/08/18 08:34

質問文に載せてあるhome_controller.rbにviewのアクションを書いてあるのですが、書き方が間違っていると思い、色々調べたのですが分からなくて何度も質問して申し訳ありませんが、何が間違っているかを教えていただきたいです。
winterboum

2021/08/18 09:05

どのactionですか?
shachihoko

2021/08/18 09:38

bookとnewとcreateのアクションです。
jj_pot

2021/08/18 09:54

bookで@reservation = Reservation.allとしていて、複数形にするべきなのに単数形の変数名だからややこしくなってる。form_withのmodelに指定できるのは単数。
shachihoko

2021/08/18 14:16 編集

bookのところを@reservation = Reservation.newに変更し、newのアクションを消しました。createでReservation.create(reservation_params)と変更したのですが、同じところで種類の違うNoMethodErrorが出たので、エラーを解消しているところなんですが、ここは違うなどありましたら教えていただきたいです。 エラー内容 NoMethodError - undefined method `reservations_path' for #<ActionView::Base:0x00000000008638> Did you mean? resolve_asset_path: app/views/home/book.html.erb:12
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問