Railsアプリケーションでは、フォームフィールドの一部を編集アクションフォームに表示したくありません。Rails編集アクションフォームでは、フォームフィールドを非表示にします。
レールでこれを行うにはどうすればいいですか?
Railsアプリケーションでは、フォームフィールドの一部を編集アクションフォームに表示したくありません。Rails編集アクションフォームでは、フォームフィールドを非表示にします。
レールでこれを行うにはどうすればいいですか?
ビューから削除してみませんか?
ActiveRecordでpersisted?
関数を使用して、フォームオブジェクトがすでに新しいオブジェクトではなくデータベースに保持されているかどうかを検出することが考えられます。
<%= form_for @user do |f| ->
<%- if @user.persisted? %>
<%# Will only show if @user has been saved to the database %>
<%= f.text_field :some_attribute_to_show_during_edit %>
あなたはページ上に表示されないフィールドを作るための3つの一般的なオプションがあります。
この回答は、これらのすべてとその使用方法について説明しています。特定のケースで最も効果的なものは、達成しようとしているものに完全に依存します。私の最新のアプリケーションでは、これらすべてのテクニックを使用しています。
これらは唯一のオプションではありませんが、これは隠しフィールドの最も一般的な要件を網羅しています。
HTMLを使用すると、フォームが送信されたときに他のすべてのフィールドでサーバーに送信されるページ上のデータを保持することができます「隠された」と呼ばれる入力フィールドのタイプがあります。ただし、非表示のフィールドは表示フィールドに変更することはできません。それは常に隠されています。あなたのデータがない場合は、このタグを使用することができ、
<%= f.hidden_field :my_id, value: my.value %>
または:あなたは同じ効果を得るために、このタグを使用することができ、Railsのフォームヘルパーで
<input type="hidden" id="my_id" name="my_name" value="my value">
:あなたはそうのようにこれを行うことができますOther Helpers of Interestセクションで
<%= hidden_field_tag :my_id, my.value %>
あなたは[Railsのガイドフォームヘルパー]でより多くの情報を見つけることができ 1ページ:モデルオブジェクトに関連付けられています。あなたは、フィールドを作成すると
CSSスタイルを使用して、HTMLエレメントのstyle="display: none;"
属性を使用してフィールドを非表示にすることができます。ここでは、簡単なHTMLの例です:入力フィールドを作成するためのRailsのヘルパーのいずれかと
<input type="text" style="display: none;" id="my_id" name="my_name">
、あなたはこのように、style: "display: none;"
HTML属性のオプションを使用することができます。
<%= f.text_field :my_field, style: "display: none;" %>
をお場合、これは一般的に便利ですいくつかのイベントが発生したときにフィールドを後で表示する動的なJavascriptビヘイビアを持っていますが、必要のないフィールドを表示しないようにするだけで便利です。
ページからいくつかのフィールドがレンダリングされたページに送信され、一部ではないされているように、あなたは、あなたのRailsのビューで条件付きのコードを記述する場合、このオプションは便利です。つぎのようにします。この場合
<%= form_for @my_model do |f| %>
<% if some_condition %>
<% f.text_field :my_field %>
<% end %>
<% end %>
some_condition
がtrue
であれば、my_field
テキストフィールドは、ページに含まれます。これにより、ビューのレンダリング時に不要なコンポーネントをそのまま残すだけで、複雑なフォームを簡単にクリーンアップすることができます。