2016-05-08 3 views

答えて

1

ビューから削除してみませんか?

1

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 %> 
2

あなたはページ上に表示されないフィールドを作るための3つの一般的なオプションがあります。

  • はCSS
  • を持つフィールドがフィールドを省略隠す隠しタイプの入力フィールドを作成します。ページから

この回答は、これらのすべてとその使用方法について説明しています。特定のケースで最も効果的なものは、達成しようとしているものに完全に依存します。私の最新のアプリケーションでは、これらすべてのテクニックを使用しています。

これらは唯一のオプションではありませんが、これは隠しフィールドの最も一般的な要件を網羅しています。

隠しタイプの入力フィールド

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スタイリングがフィールド

を非表示にするには、フィールドの最初の可視性を決定するためにCSSスタイルを使用することができます。 CSSスタイリングでは、フィールドはユーザーには表示されませんが、フォームが送信されるとサーバーに送信されます。

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_conditiontrueであれば、my_fieldテキストフィールドは、ページに含まれます。これにより、ビューのレンダリング時に不要なコンポーネントをそのまま残すだけで、複雑なフォームを簡単にクリーンアップすることができます。

関連する問題