0

Pages コントローラー (または任意のカスタム生成エンジン) で編集/作成メソッドを変更する必要がありますが、何も見つかりません。すべてのコントローラーをオーバーライドし、プロジェクト全体で「def edit」を検索しようとしましたが、何も見つかりませんでした。

Rails は初めてで、これがどのように機能するのかわかりません。ページを編集しようとすると、debug(params) は、refinery/admin/pages を指しますが、編集メソッドも、管理者またはページ コントローラーにもありません。では、更新ボタンを押したり、新しいページを作成したりすると、リクエストは実際にどこに行くのでしょうか?

4

2 に答える 2

0

わかりました、何が問題なのかわかりました。

「override controller=*」を実行すると、実際にはすべてのコントローラーがオーバーライドされるわけではないため、controllers/refinery/ の pages_controller.rb は明らかにページ コントローラーの半分にすぎません。私が必要とした実際のコントローラーは、「controller=refinery/admin/*.

作成アクションと編集アクションがどこにあるかはまだわかっていませんが、少なくとも新しいアクションと更新アクションは見つかりました。

于 2013-09-24T12:13:01.197 に答える
0

Rails と Refinery の世界は初めてですが、お役に立てるかもしれません。

これを読んだことがありますか:デコレーターを使用したコントローラーとモデルの拡張

私の場合、データベースに保存する前にパラメーターを変更する必要があり、基本的に大文字であることを確認しました。だから私はこれをしました:

Refinery::Routes::Admin::RoutesController.class_eval do
  before_filter :uppercase_region, :only => [:create, :update]

  protected

  def uppercase_region
    params[:route][:region].upcase!
  end
end

たぶん、フィルターがあればそれで十分です。ここで、作成および更新アクションもオーバーライドできると思います。

生成されたエンジンには、次のようなものがあることがわかります。

crudify :'refinery/routes/route',
        :title_attribute => 'name',
        :xhr_paging => true

そのコードに従うと、「crud.rb」ファイルに到達します: crud.rb

ここでは、アクションがどのように見えるかを読むことができます。これで、チュートリアルで説明したように、「decorator」ファイルに独自のファイルを作成できます。

これが誰かに役立つことを願っています。

于 2014-05-27T12:40:06.490 に答える