1
1

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.

[Rails]hidden_field_tag とf.hidden_fieldの違い

Posted at

はじめに

Railsを使っていてhidden_fieldhiddn_field_tagの違いについて学んだので備忘録として残しておきます

<%= hidden_field_tag :message, @user.message %>
<%= f.hidden_field_tag :message, :value => @user.message %>

環境

ruby 2.6.3
rails 6.0.3

本題

コントローラーで保持しているパラメータ(user_idなど)を次のアクションに渡したいときに使うのがhidden_fieldhiddn_field_tagですがこの2つは使い勝手が少し変わります。

1. hidden_field_tag

<%= hidden_field_tag :message, @user.message %>

上記のコードではmessageというパラメータに@user.massageの情報を渡します。
サーバーで送ったパラメータを確認すると以下のようになっています。

Parameters: {"authenticity_token"=>"jLrZNeJ+oz7RT6sKuiHe/LoEdcY6hWx9zmx3mx6xXpzhxbh0VtgiVk0c2mMfi3654mkAB1mQTVkwH0lm5KO8Kw==","message"=>"hello", "commit"=>"メッセージ"}

"message"=>"hello"のようにパラメータが送られているのがわかります。
この受け取ったパラメータを利用したいはparams[:message]のようにすると中身を参照できます。

2. f.hidden_field

f.hidden_fieldの場合は書き方が少し特殊になります。

 <%= form.hidden_field :message, value: @user.message %>

上記のようにvalueの続きに渡したい要素を指定します。

サーバーに送られたパラメータを確認すると以下のようになっています。

Parameters: {"authenticity_token"=>"jLrZNeJ+oz7RT6sKuiHe/LoEdcY6hWx9zmx3mx6xXpzhxbh0VtgiVk0c2mMfi3654mkAB1mQTVkwH0lm5KO8Kw==","users"=>{"message"=>"hello"}, "commit"=>"メッセージ"}

"users"=>{"message"=>"hello"}のようにパラメータが送られています。
このパラメータを利用したい場合はparams[:user][:message]のように記述することで利用できます。

参考

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?