2

投稿の足場にプレビュー機能を実装しようとしています。ユーザーが新しいビュー (/posts/new) に情報を入力できるようにし、送信ボタンをプレビュー ボタンに置​​き換えるだけです。

プレビュー ボタンをクリックすると、ユーザーはプレビュー ページ (おそらく /posts/new/preview) にルーティングされます。ユーザーが変更を加えたい場合は、[戻る] をクリックするか、投稿に満足している場合は、投稿を送信できます。

この記事 ( http://eyedeal.team88.org/node/105 ) を見つけましたが、古いようです。これに対する最善のアプローチは何ですか?

どうもありがとう、トニー

4

2 に答える 2

3

作成ページからの送信時に、新しいアクションでオブジェクトを作成しますが、データベースには保存しません。次に、サブミット ボタンを表示する新しいアクションでフラグを設定して、オブジェクトをその表示ビューにレンダリングします。ショービューでは、オブジェクトのすべての属性を含むフォームを常に db の非表示の入力フィールドまたは display:none に保存してください。フラグが設定されている場合は、送信ボタンを表示します。送信時に、オブジェクトをデータベースに保存する new_to_db アクションに移動します。

于 2010-05-23T15:52:31.693 に答える
0

あなたが投稿したリンクは方法ですが、私はオブジェクトを保存してブール値のフラグを設定することを好みます.publicをfalseにしましょう(:default => falseは移行で定義されています)。次に、基本的に行うことは、実際に投稿を作成し、アクションを表示するようにリダイレクトすることです。ここには、編集ボタン (レンダリング編集アクション)、投稿ボタン (パブリック フラグを true に設定するカスタム アクション)、およびキャンセル ボタン (実際に投稿を削除する) があります。後で続行ボタンを押すと、投稿が保持され、他のページにリダイレクトされるため、ユーザーは後で戻って編集を完了することができます。

すべての投稿を表示する必要がある場合は、named_scope :visible, :conditions => ['posts.public = ?', true] を定義し、index および同様のアクションで Post.all の代わりに Post.visible を呼び出します。条件 ['posts.public = ?', false] を使用して default_scope を定義することもできますが、表示されていない投稿を見つけたい場合は、#without_scope を使用する必要があることに注意してください。

この方法は、リンクの方法よりも優れています。ユーザーはいつでも後で戻ってきて、投稿の編集と公開を完了することができるからです。ただし、より多くのオブジェクトを DB に保存し、非表示の投稿を処理する必要があります (デフォルトでは表示しないなど)。

于 2010-05-23T14:25:09.750 に答える