90

これを読んだことがありますが、RoRは初めてなので、理解するのに少し苦労しています。フォームを使用して新しいリクエストレコードを作成していますが、送信する必要のあるすべての変数がすでに存在しています。これが私が送信する必要のあるデータです(これはdoループにあります):

:user_id => w[:requesteeID]
:requesteeName => current_user.name
:requesteeEmail => current_user.email
:info => e

これが私のフォームです。これまでのところ機能しますが、すべてに対してNULL値のみを送信します。

<% form_for(:request, :url => requests_path) do |f| %>
    <div class="actions">
        <%= f.submit e %>
    </div>
<% end %>

hidden_​​fieldsを使用して、すでに持っているデータを送信するにはどうすればよいですか?読んでくれてありがとう。

4

3 に答える 3

111

hidden_ ​​field またはhidden_​​field_tagを参照してください

<% form_for(:request, :url => requests_path) do |f| %>
    <div class="actions">
        <%= f.hidden_field :some_column %>
        <%= hidden_field_tag 'selected', 'none'  %>
        <%= f.submit e %>
    </div>
<% end %>

その後、コントローラーで

 params[:selected]="none"
 params[:request][:some_column] = request.some_column

使用したときの注意

   <%= f.hidden_field :some_column %>

htmlに変わります

<input type="hidden" id="request_some_column" name="request[some_column]" value="#{@request.some_column}" />

そしてあなたが使用したとき

<%= hidden_field_tag 'selected', 'none'  %>

htmlに変わります

   <input id="selected" name="selected" type="hidden" value="none"/>
于 2010-06-28T11:41:32.363 に答える
84

次のように、モデルの非表示の入力としてカスタム値を送信できます。

<%= f.hidden_field :your_model_field_name, value: 12 %>

デモはどこvalue: 12にありますが、必要な値を渡すことができます。

于 2015-07-16T13:55:42.370 に答える
3

ブルーノ・パウリーノの答えについてさらに詳しく説明します。

Rails 6アプリケーションで作業しているときに、これと同じ懸念がありました。

私は本のフォームを持っていましたが、現在のユーザーのIDを、非表示の方法で作成される各本のフォームに渡す必要がありました。

私の最初のフォームフィールドは次のとおりです。

<div class="field">
  <%= form.label :user_id %>
  <%= form.text_field :user_id %>
</div>

私はこれを使用してこれに変更する必要がありました:

<div class="field">
  <%= form.hidden_field :model_field_name, value: field_value %>
</div>

だから私は後でこれを持っていました:

<div class="field">
  <%= form.hidden_field :user_id, value: current_user.id %>
</div>

それで全部です。

これがお役に立てば幸いです

于 2021-07-11T14:39:58.720 に答える