1

我有这样的代码:

def show
  @attachment = Attachment.find(params[:id])

  respond_to do |format|
    format.html
  end
end

此代码允许响应 json,但不呈现任何内容。如何在除 html 之外的任何其他请求上显示自定义页面?

4

3 回答 3

2

尝试:

before_filter do
  render text: 'Wrong type', status: 406 unless request.format == Mime::HTML
end
于 2013-03-23T12:24:18.967 回答
2

当您在 config/routes.rb 中定义它们时,您可以限制它们的格式

scope :format => true, :constraints => {:format => :html} do
  resources :attachments
end

定义要在该范围内限制其格式的所有路由。

于 2013-03-23T12:24:39.330 回答
2

您可以format.any用于除 html 之外的任何其他请求:

def show
  @attachment = Attachment.find(params[:id])

  respond_to do |format|
    format.html { render text: => 'This is html' }
    format.any  { render :text => "Only html is supported" }
  end
end
于 2013-03-23T10:18:18.783 回答