10

Showアクションなしで Rails アプリケーションを構築したことがある人がいるかどうか疑問に思っていました。

私のアプリケーションでは、ユーザーがリストからプロジェクトを選択すると、おそらくそれを表示するだけでなく、編集もしたいと思うでしょう。

では、show アクションを実装せず、代わりにすべてのレコードを編集フォームにリンクすることは良い方法でしょうか?

唯一の注意点は、ユーザーが誤ってプロジェクトを編集する可能性があることです。ただし、 jQuery を使用してすべてのフォーム フィールドでデフォルト属性を無効に設定することで、これを防ぐことができます。そうすれば、編集用にフォーム フィールドのロックを解除するには、ユーザーは [編集] ボタンをクリックする必要があります。

それは理にかなっていますか、それとも私は完全に気が狂っていますか?

おそらく、これは Rails の RESTful アーキテクチャと競合するのでしょうか?

4

4 に答える 4

1

最初の考え:

私の意見では、これはユーザーを混乱させる可能性があります。理由は次のとおりです。ショーアクションの通常のURLは次のようになります。

products /:id

しかし、編集は次のようになります。

products /:id / edit

そのため、ユーザーの1人が([表示]をクリックして)プロジェクトを確認したい場合は、表示されたURLによって混乱する可能性があります。名前付きルートを使用してこれを修正することもできますが、私の意見では、これは間違いなくRESTと競合します。

2番目の考え:

オブジェクトの編集アクションを有効にするためだけにjQueryロジックを実装する前に、show-およびeditページ/メソッドを備えた組み込みのメカニズムを使用する必要があります。

私が間違っている場合は私を訂正してください:)

于 2012-09-29T12:24:03.033 に答える
1

単純な名前空間付きの CMS バックエンドを構築している場合、通常、showアクションを実行しても意味がないと思います。Django-admin はそれを省略し、のようなパス/admin/blogs/post/241で編集フォームに直接アクセスします。正面のウェブサイトをshowアクションとして使用するこの方法は理にかなっていると思います。

これは Rails のデフォルトのルーティング規則に反しますが、アップグレードによって何かが壊れるリスクはありません。

次のようにルートをオーバーライドできます。

resources :posts, except: [:show] do
  get ':id' => 'posts#edit', on: :member
end

resourcesただし、メソッドがデフォルトでルートを定義しているため、ルートをそのままにしてexcept、そこにオプションをスローして、誰かが/posts/241. その後、いつでも編集ページにリンクできます。

編集: CMS を構築するとき、私はshowアクションを使用したいと思いますが、属性をリストするだけではありません。私はそれをそのレコードの一種の要約として使用するのが好きで、いくつかの重要な情報、作成日/最終更新日、バージョンのリスト、編集者 (そのようなことに興味がある場合) を表示します。また、編集、破棄、またはフロントエンド Web サイトのレコードへのアクセスへのリンクもあります。

于 2012-10-01T04:16:21.220 に答える
0

単一ページ Web は、特に Ember.js などを使用して、私たちが行っている方法です。編集を可能にするために新しいページをロードすることは、最近では少し時代遅れに思えます。それを処理するには、最適な場所のgem を使用できます。

このトピックに関する Railscast もあります: http://railscasts.com/episodes/302-in-place-editing

于 2013-06-25T10:46:50.097 に答える
0

私が好むのは、edit.html.erb を show.html.erb に名前を変更し、最後に編集アクションをレンダー ショー ビューにすることです。

edit.html が Web フォルダ内の唯一のファイルである場合、おそらく名前を index.html に変更するだけですよね? edit.html をデフォルトのインデックス ファイルにするためだけに、新しい .htaccess ファイルに "Index edit.html" を書き込むのではなく。

または、代わりにビュー ファイルの名前を「edit.html.erb」にしたい場合は、show.html.erb を削除して、show アクションに編集ビューをレンダリングさせることができます (「render :edit」を使用)。

show アクションを完全に省略することはお勧めしません。なぜなら、product/:id/edit だけが到達可能な URL になり、product/:id は 404 を返すからです。

正規の URL を product/:id/edit または product/:id にするかどうかは自由ですが、product/:id は少なくとも同じビューをレンダリングするか、product/:id/edit にリダイレクトする必要があります。

于 2012-11-02T17:02:47.213 に答える