3

データベースに保存されているリキッド テンプレートをレンダリングしようとしています。

コントローラーでの「表示」アクションは次のとおりです。

  def show
    @organization = Organization.find_by_subdomain(request.subdomain)
    @template = Liquid::Template.parse(Template.find(@organization.current_template).body)
    @page = @organization.pages.find(params[:id])

    respond_to do |format|
      format.html { render @template.render('page' => @page), :template => false}
      format.json { render json: @page }
    end
  end

ただし、ページにアクセスすると、「テンプレートが見つかりません」という例外が発生し、次のエラーが表示されます (「testing testing」はページ オブジェクトの body 属性であり、現在テンプレートでレンダリングされているのはこれだけであることに注意してください)。

Missing template /testing testing with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee, :haml]}.
Searched in: * "/Users/ashercohen/Documents/Rails/Vocalem-Rails/app/views" 
* "/Users/ashercohen/.rvm/gems/ruby-1.9.3-p194/gems/twitter-bootstrap-rails-2.1.1/app/views"
* "/Users/ashercohen/.rvm/gems/ruby-1.9.3-p194/gems/devise-2.1.2/app/views"

:template => false具体的に引数を渡したのに、別のテンプレートを見つけようとするのはなぜですか? 私がここに欠けているものはありますか?ここでは必要ないように思われるため、テンプレートファイルの使用をバイパスしようとしています(ただし、間違っていても強く反対しているわけではありません)。

4

1 に答える 1

4

ほとんどの場合、render はファイル名を受け取ります@template.render('page' => @page)が、プレーンな html が含まれているためです。次のように render を呼び出す必要があります。

render :text => @template.render('page' => @page), :content_type => :html
于 2012-07-29T21:34:22.117 に答える