导轨模板缺失

时间:2013-06-13 19:59:20

标签: ruby-on-rails ruby-on-rails-3

我最近更新了一个简单的控制器

render :json => @something

respond_to do |format|
          format.html {
            redirect_to @something
          }
          format.json {
            puts "found json format"
            format.json { render json: @something, status: :created }
          }
        end

但是,现在我收到了ActionView :: MissingTemplate错误。我的问题是,如果我使用respond_to do | format |块,我需要使用模板吗?如果我只想返回普通的json怎么办?

顺便说一句,json respond_to块中的puts语句被成功调用。

4 个答案:

答案 0 :(得分:1)

我认为问题是在你的format.json块内部调用puts以及在它自己的块内部嵌入format.json。尝试删除两者(如下所示)。

respond_to do |format|
          format.html {
            redirect_to @something
          }
          format.json {
            puts "found json format"
            format.json { render json: @something, status: :created }
          }
        end

尝试:

  respond_to do |format|
    format.html { redirect_to @something }
    format.json  { render json: @something, status: :created }
  end

答案 1 :(得分:1)

您告诉您接受HTML和JSON格式。由于您的请求来自HTML,因此您将呈现HTML模板。 如果您只想返回JSON,请从代码中删除该行。另请查看respond_to上的docs

可能你已经知道了,但有Layouts and Rendering的指南。

答案 2 :(得分:1)

从json渲染块中删除format.json部分(块中有一个不必要的块):

  respond_to do |format|
      format.html {
        redirect_to @something
      }
      format.json {
        render json: @something, status: :created
      }
    end

答案 3 :(得分:1)

我认为您的代码提示错误的原因是因为您有

format.json {
            format.json { render json:  @something , status: :created }
          }

你应该:

format.json {
           render json:  @something , status: :created
          }