Ruby on Railsの「:確認=>」オプションに入力されたばかりのフォームのコンテンツを表示する方法
-
18-09-2019 - |
質問
実際にそれをDBに保存する前に入力された情報を確認する方法を持っています
ここで説明するように、個別の確認ページを作成することを検討してください
Ruby on Rails:ActivereCordオブジェクトの作成の確認ページ
ただし、私のフォームには、PaperClipを使用した添付ファイルが含まれており、実装するのが面倒になります。
私は、ユーザーが入力したばかりの情報を表示する:確認=>ポップアップを持っているだけだと思った。
問題は、たとえば、ユーザーが入力したばかりの情報を表示する方法です。
<% form_for @entry, :html => { :multipart => true } do |f| %>
<%= f.error_messages %>
<%= f.label :name %><br />
<%= f.text_field :name %>
<%= f.label :file %><br />
<%= f.file_field :file %>
<%= f.submit 'Create', :confirm => "????? " %>
<% end %>
解決
添付ファイルのロードを考えると、ユーザーが確認できるようにする添付ファイルから派生した情報を含むステージングビューをレンダリングすることは悪い考えではないかもしれません。画像の場合はファイルを表示するように、またはテキストファイルなどのテキストの最初の段落などを表示します。
確認のポップアップを追加するよりも多くの作業が必要になりますが、強化されたユーザーエクスペリエンスは余分な労力に見合うだけの価値があると思います。
私はPaperClipの仕組みに精通していません。したがって、あなたは主に親密な詳細のためにあなた自身のものです。
アップロードされたファイルのサンプルでステージングビューをレンダリングする前に、おそらくレコードを作成する必要があります。それを達成するために、問題のモデルに「アクティブな」列を設定しましたが、それはデフォルトでfalseになります。
使用法は次のようになります:
- ユーザーは新しいフォームに記入します。
- 添付ファイルが更新され、レコードが保存され、アクティブフィールドがfalseに設定されています。
- 基本的に確認リンク/ボタンとキャンセルリンク/ボタンを備えたショーページである確認ページにリダイレクトされます
a。 [確認]リンク/ボタンがクリックされると、コントローラーにリクエストが送信され、このレコード設定の更新アクションがアクティブになります。
b。キャンセルリンク/ボタンをクリックすると、このレコードの破壊アクションをトリガーするコントローラーにリクエストを送信します。
残っているのは、ユーザーがブラウザセッションを終了したばかりであると仮定するのが安全であるため、非アクティブであり、十分にずっと前にクレートされていたオブジェクトを削除するための繰り返しタスクを設定することです。
他のヒント
Rails送信方法の確認オプションは、テキスト値のみを取得できます。
確認テキストを動的に生成したい場合は、独自のHTML送信タグを作成し、生成されたテキストで使用するフィールドを分析するカスタムJavaScriptを記述する方法の1つです。
または、Rails送信方法を使用することもできますが、JQueryのようなものを使用してイベントハンドラーを追加します。
私はただ投げるだけです jsがオンクリックハンドラーに. 。それはすべてレールです。
<%= f.submit 'Create', :onclick => "confirm('Name is ' + $F('entry_name'));" %>
(注意して、それをテストしませんでしたが、それは近くに見えます。