1

Railsでは、index、show、およびcrudメソッドを備えたウィジェットのコントローラーがあります。
インデックスコントローラーは単純です

@widgets = Widget.all
respond_to do |format|
  format.html
  format.json {render :json => @widgets}

次に、ホームページまたはメインのアプリ フォルダー内の任意のページで、次のように言うことができます。

<% @widgets.each do |w| %>
     <p><%= w.name %></p>
<%end%>

Refinery にはウィジェット エンジンがありますが、これらのエンジンのコントローラーには、標準の index、show、crud メソッドがありません。上記のコードで製油所の pages_controller.rb のホーム アクションをオーバーライドすると、エラーが発生します。

初期化されていない定数Refinery::PagesController::Widget

私の質問は、リファイナリ エンジンのクラスを参照して、メインの Rails アプリからビューに含めることができるようにするにはどうすればよいですか?

例: app.main.views.index.html.erb

 <h1> this is my home page.  We sell all sorts of stuff including: </h1>

 <% @widgets.each do |w| %>
      <p><%= w.name %></p>
 <%end%>

 <% @gadgets.each do |g| %>
     <p><%= g.name %></p>
 <%end%>

ウィジェットとガジェットの両方が精製エンジンです。私はまさにこれを行うバニラレールアプリを持っていますが、それは機能しますが、これを理解することで世界が開かれるので、製油所でそれを行う方法を知りたいです. 誰かがアドバイスしたり、私が見落としている可能性のあるドキュメントを指摘してくれたりして、助けてくれますか.

編集 これは、app>controllers>refinery ディレクトリにある私の pages_controller.rb のホーム アクションです。

 def home
  @widgets = Widget.all
  respond_to do |format|
    format.html
    format.json { render json: @widgets}
  end  
  #render_with_templates?
 end
4

1 に答える 1

0

Refinery CMS は、エンジンの名前空間に複数形のモデル名を付けます。次に、Refinery ネームスペース内にエンジン ネームスペースをネストします。したがって、メインのアプリ構造内のビューですべてのウィジェットを照会する正しい方法は次のとおりです。

@widgets = Refinery::Widgets::Widget.all
于 2013-03-29T15:05:27.610 に答える