0

我有以下代码行,它有条件地重定向我想包含在我的 Rails 控制器中并仅在请求是 HTML 请求的情况下执行。

如果请求是 JSON,我想跳过这个逻辑。respond_to :html, :json如何与在所有控制器操作之前声明的方法一起执行此操作?

redirect_to some_controller and return if @pages.empty?
4

3 回答 3

2

你想要这样的东西:

class SomeController < ApplicationController
  def index
    @pages = Pages.find(:all)

    respond_to do |format|
      format.html do
        redirect_to other_controller and return if @pages.empty
        # ... other logic ...
      end
      format.json { render json: @pages }
    end
  end
end
于 2013-10-07T21:51:55.580 回答
1

您应该使用该respond_to块:

respond_to do |format|
  format.html { redirect_to some_controller }
  format.json { render json: @data }
end

这将重定向到some_controllerHTML 请求之后,并在 JSON 请求之后呈现 JSON 数据。

于 2013-10-07T21:52:31.507 回答
0

您的意思是通过 HTTP 请求格式的分支逻辑。

respond_to do |format|
  format.html {your_html_logic }
  format.json { your_json_logic  }
end
于 2013-10-07T21:51:38.173 回答