0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ruby on Rails で Slim 使用時、form_with で "undefined local variable or method `f' for "と表示される

Last updated at Posted at 2020-10-11

開発環境

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を導入したのですが早速エラーに引っかかりました。
内容は、スクリーンショット 2020-10-11 12.24.41.png
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。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?