@yosaku_ibs

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

|f|というコードはなにを意味してるのでしょうか?

解決したいこと

サンプルコード内の2行目の末尾に書かれている「|f|」というコードについて2点ご教示頂きたいことがございます。

①「|f|」というコードはなにを意味しているのでしょうか?
②「|f|」というコードは下記のサンプルコード内でどのように処理されていくのでしょうか?

<h1>会員登録</h1>
<%= form_with model: @user, url: signup_path, local: true do |f| %>

    <div class="form-group">
        <label>名前</label>
        <%= f.text_field :name, class: "form-controll" %>
    </div>

    <div class="form-group">
        <label>メールアドレス</label>
        <%= f.text_field :email, class: "form-controll" %>
    </div>

    <div class="form-group">
        <label>パスワード</label>
        <%= f.password_field :password, class: "form-controll" %>
    </div>

    <div class="form-group">
        <label>パスワード確認用</label>
        <%= f.password_field :password_confirmation, class: "form-control" %>
    </div>

    <%= f.submit "登録", class: "btn btn-primary" %>
<% end %>

自分で試したこと

「rails |f| 意味」などで検索しましたが、解決に繋がりませんでした。

ご存知の方がいらっしゃいましたら誠にお手数ではございますが
ご教示の程よろしくお願い申し上げます。

0 likes

1Answer

|f| はメソッド付きブロック呼び出し構文の一部で、ブロック引数 f を宣言しています。(①)

普通の Ruby コードでよく見かけるブロックの例は以下のようなものです:

[1, 2, 3].each do |num|
  puts num
end

これは、「引数 num を受け取り、 puts num を実行するブロック」を each メソッドに渡しています。 each メソッドは、配列の要素を順に1つずつ引数にしてはブロックを呼び出す処理を繰り返します。

ご質問のコードも同じように考えることができます。「引数 f を受け取り、 do から end までの処理を実行するブロック」を form_with メソッドに渡し、 form_with メソッドはフォームヘルパーオブジェクトを引数にしてブロックを一度呼び出します。(②)

1Like

Your answer might help someone💌