🌚
【Rails】hidden_field
hidden_fieldとは
HTMLのフォーム要素<input type="hidden">
を作るためのヘルパーメソッド。
ユーザーからは見えないが、フォーム内のデータをサーバーに送信するために使う。例えば、フォーム内ではデータを持っておく必要はあるが、ユーザーには表示したくない場合に使う。
基本の使い方
<%= form_with(model: @user, url: users_path, local: true) do |f| %>
<%= f.hidden_field :user_id, value: @user.id %>
<!-- 他のフォーム要素をここに追加 -->
<%= f.submit "Submit" %>
<% end %>
上記の例は、`hidden_field`を使用して`user_id`という属性を送信してる。フォーム内の他のフォーム要素と同様にサーバーに送信するが、ユーザーには表示されない。
## 複数のhidden_fieldを使う場合
```ruby
<%= form_with(model: @order, url: orders_path, local: true) do |f| %>
<%= f.hidden_field :order_id, value: @order.id %>
<%= f.hidden_field :user_id, value: current_user.id %>
<!-- 他のフォーム要素をここに追加 -->
<%= f.submit "Submit" %>
<% end %>
上記の例は、複数のhidden_field
を使って、注文IDとユーザーIDをフォームと一緒に送信している。
コントローラでの受け取り
送信されたデータは、コントローラ内で通常のフォームデータと同じように受け取ることができる。
class OrdersController < ApplicationController
def create
@order = Order.new(order_params)
# 他の処理
end
private
def order_params
params.require(:order).permit(:order_id, :user_id, ...)
end
end
order_params
メソッド内で、order_id
とuser_id
を受け取ることができるようになる。
注意点
hidden_field
は開発者ツール等を使うと、ブラウザで確認することができるため、送るデータには注意が必要。
例えば、パスワード、クレジットカード情報、セッション情報、認証トークン などは絶対に送ってはいけない。
Discussion