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

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

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

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

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

Ruby on Rails

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

836閲覧

hamlでform_forを用いて入力フォームを実装したい

ak-2015

総合スコア1

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

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

Ruby on Rails

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2020/05/10 07:58

前提・実現したいこと

hamlでform_forを用いてフォームを作成する必要があるのですが、syntaxエラーが生じています。
下図のような、テキストボックスと画像取り込みボタン、送信ボタンを実装したフォームの作成としています。

テキストボックス、および画像取り込みアイコン、送信ボタン

発生している問題・エラーメッセージ

6行目

syntax error, unexpected tLABEL, expecting ')' ..._escape((( f.file_field, class: 'box__file-btn'

11行目(コードは9行目までしか書いていませんが、エラーは11行目と出ます)

syntax error, unexpected keyword_ensure, expecting end-of-input ensure

該当のソースコード

haml

1 .footer 2 = form_for [@group, @message] do |f| 3 .box 4 = f.text_field :content, class: 'box__text', placeholder: 'type a message' 5 = f.label :image do 6 = f.file_field, class: 'box__file-btn' 7 = span class: 'box__icon' 8 = icon('fas', 'image',class: 'icon') 9 = f.submit 'Send', class: 'send-btn'

試したこと

haml

1= f.label :image do 2  = f.file_field, class: 'box__file-btn' 3 = span class: 'box__icon' 4 = icon('fas', 'image',class: 'icon')

を削除するとエラーが生じなくなるので、この部分の書き方に誤りがあるのだとは思うのですが。
初学者のため、不足点等あれば指摘いただけると幸いです。

補足情報(FW/ツールのバージョンなど)

haml (5.1.2)
haml-rails (1.0.0)
rails (5.0.7.2)

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

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

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

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

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

guest

回答1

0

ベストアンサー

よく分かりませんが、labelの後ろにあるdoは必要なものでしょうか?
エラーにend-of-inputとあるので、doあたりが原因だとは思いますが。。

また、デバッグの方法として、そのlabelの塊を削除するのではなく、
まず= icon('fas', 'image',class: 'icon')を削除してみてエラーが出るか?
次に= span class: 'box__icon'を削除してみてエラーが出るか?
のようにだんだんとエラーの行を絞り込んでいくと、よりどこに原因があるかわかると思いますよ。

投稿2020/05/10 09:57

gnfreeworks

総合スコア306

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

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

ak-2015

2020/05/10 12:34 編集

ありがとうございます。 塊を小さくしてエラーの箇所を探り、試行錯誤して解決にたどり着きました。 `= f.file_field, class: 'box__file-btn'`にカラム名が必要だったようで、`= f.file_field :image, class: 'box__file-btn'`と修正、また`= span class: 'box__icon'`を、`%span.box__icon`に修正したところ、エラー解消しました。 拙い質問にも関わらず、ご回答くださりどうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問