我的 Controller 中有一个latest操作。此操作仅获取最后一条记录并呈现show模板。

class PicturesController < ApplicationController
  respond_to :html, :json, :xml

  def latest
    @picture = Picture.last

    respond_with @picture, template: 'pictures/show'
  end
end

有没有更清洁的方式来提供模板?由于这是Sites Controller ,因此似乎不得不为HTML格式提供pictures/部分似乎很多余。

最佳答案

如果要渲染的模板属于同一 Controller ,则可以这样编写:

class PicturesController < ApplicationController
  def latest
    @picture = Picture.last

    render :show
  end
end

不需要图片/路径。您可以在这里更深入:Layouts and Rendering in Rails

如果需要保留xml和json格式,则可以执行以下操作:
class PicturesController < ApplicationController
  def latest
    @picture = Picture.last

    respond_to do |format|
      format.html {render :show}
      format.json {render json: @picture}
      format.xml {render xml: @picture}
    end

  end
end

关于ruby-on-rails - Rails 3 response_with自定义模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13345846/

10-16 18:44