開発環境
Ruby: v2.5.7
Rails: v5.2.4.4
gem slim: v4.1.0
##エラー内容
= form_with model:@team, local:true do |f|
= render 'layouts/error_message', model: f.object
.input
= f.label :name
= f.text_field :name
.input
= f.label :introduction
= f.text_area :introduction
= f.submit
今回、Ruby on RailsのGemのひとつであるslim
を導入したのですが早速エラーに引っかかりました。
内容は、
NameError
と
undefined local variable or method f' for #<#<Class:0x00007fef406b53c8>:0x00007fef35880668>
指定している f が定義されていないとの事です。
form_withに記述したブロック変数で fとあるのに...
もしや、slim独特のform_withの書き方があるのでは??と思い、色々と調べていたのですが
結果、以下のように修正したら解決しました。
= form_with model: @team, local: true do |f|
/ それぞれ 1段落インデントをずらしました
= render 'layouts/error_message', model: f.object
.input
= f.label :name
= f.text_field :name
.input
= f.label :introduction
= f.text_area :introduction
= f.submit
インデント調整でした...分かってみると単純...
end
や()
が必要ないので、form_withの適用範囲をどうやって見極めてるのかなと頭によぎったんですが、インデントで識別しているんですね。なるほど...
このエラーを通して気付きました。笑
単純なことですが、ハマりかけましたので投稿します。
それにしても慣れは必要ですが、少ない記述とカッコがいらないだけでもかなり記述が簡略化されてコードが書きやすいですし、見やすいです。加えて、レンダリングも少し速いそうなので良いところばっかりですね、slim。