0

オンラインで見つけた画像トリミングの例を使用していましたが、混乱しました。私のコントローラーには実際には「クロップ」メソッドはありません。代わりに(ガイドに従って)私は

 render :action => 'cropping', :layout=> "admin"

私の作成方法で。これにより、ビューと呼ばれるページがレンダリングされcropping.html.erbます。それは問題なく動作しますが、URL に直接アクセスしたり、ボタンを押して画像を再トリミングしたりする場合など、そのページをリンクまたはレンダリングする方法がわかりません。実際にコントローラーでクロップ メソッドを作成し、これを実行できるようにする場合はルーティングを介して接続する必要がありますか、またはビュー内でクロップ アクションをレンダリングする同じ場所にリンクする方法はありますか?

混乱して申し訳ありません:)チュートリアルの最初のバージョンにトリミング方法があり、彼がそれを削除たことは役に立ちません!! ある方法が他の方法よりも優れている理由についての説明は素晴らしいでしょう。ありがとう!!

4

2 に答える 2

0

これを行う最善の方法は、クロッピング テンプレートの使用方法と、関連するコントローラー ロジックによって異なります。先に進む前に、レンダーのドキュメントを読んでおくと便利です。

  • トリミング テンプレートを一方向にしか使用しない場合。参照アクションとは独立した同じコントローラーロジックを使用します(フォーム送信の一部ではありません)。次に、新しいアクションとルートを定義する必要があります。名前付きルートを作成するか、routes.rb のリソース定義に新しいルートを追加するだけかは、あなたの選択です。

    ルートをどのように定義するかに応じて、次のことができますlink_to "Cropping", cropping_url

  • テンプレートをレンダリングする前に、それぞれ異なる準備が必要な複数のコントローラーからレンダリングする場合。

    render :template => 'path/template_name' 
    

    TEMPLATE_ROOTpath は(特に定義されていない限り)からの相対パスでRAILS_ROOT/app/viewsあり、テンプレート名は末尾の .html.erb/.rhtml を除いたファイル名です。

  • クロッピングを別のビューの一部としてレンダリングする場合は、それをパーシャルにすることができます。

    パーシャルにするには、ファイルの名前を「_cropping.html.erb」に変更するだけです。これで、任意のビューから呼び出すことができます

    <%=render :partial => 'path/partial_name' %>
    

    繰り返しますが、path はパーシャルへの TEMPLATE_ROOT 相対パスです。また、partial_name は、先頭のアンダースコアと末尾の .html.erb または .rhtml を省略した後のパーシャルのファイル名です。

注: テンプレートへのパスを含むいずれのソリューションでも、呼び出し元のコントローラーがパスと一致する場合はパスを省略できます。つまり、テンプレート パスが 'users/cropping.html.erb' の場合、UsersController から呼び出されます。

于 2009-10-30T00:30:40.860 に答える
0

あなたの場合、通常はファイルに create.html.erb という名前を付けます。これは、レールがデフォルトでファイルを探す場所です。次のようなコードを記述します。

render :action => 'viewname'

通常、あるファイルをあるケースでレンダリングし、別のファイルを別のケースでレンダリングする場合に発生します。

于 2009-10-30T00:46:15.887 に答える