4

コントローラー内:

def some_action
  @foo = 'bar'
end

とでsome_action.json.erb

<%= render :json => @foo %>

これにより、エラーが発生します。

ArgumentError - You invoked render but did not give any of :partial, :template, :inline, :file or :text option.:
  (gem) actionpack-3.2.10/lib/action_view/renderer/template_renderer.rb:36:in `ActionView::TemplateRenderer#determine_template'
  (gem) actionpack-3.2.10/lib/action_view/renderer/template_renderer.rb:10:in `ActionView::TemplateRenderer#render'
  (gem) actionpack-3.2.10/lib/action_view/renderer/renderer.rb:36:in `ActionView::Renderer#render_template'
  (gem) actionpack-3.2.10/lib/action_view/renderer/renderer.rb:17:in `ActionView::Renderer#render'
  (gem) actionpack-3.2.10/lib/action_view/helpers/rendering_helper.rb:24:in `#<Class:0xb4a2378>#render'
   ...  

render :json => ...頭を包み込んでいるだけで、なぜここで働かないのかわかりません。私はformat.jsonのコントローラーから直接レンダリングできることを知っていますが、.erbでjsonを手動で作成せずに、ビューを介してレンダリングしようとしています。

Ruby1.9上のRails3.2.10

4

1 に答える 1

3

renderビューコンテキストのメソッドとrenderコントローラーコンテキスト:jsonのメソッドは2つの異なるメソッドであり、前者はオプションを期待していません。

apneadiving提案したように、@foo.to_jsonまたはjsonビルダーを使用します。

于 2013-01-07T15:34:49.893 に答える