首页 文章

重定向到Ruby on Rails中的另一个页面

提问于
浏览
0

我想在 create 方法的末尾重定向到另一个页面 admin_antenna_reader_rfids_path . 我做了:

def create
    @antenna_reader_rfid = AntennaReaderRfid.new(antenna_reader_rfid_params)
      if @antenna_reader_rfid.save
        render json: {status: true}
        redirect_to admin_antenna_reader_rfid_path(q@antenna_reader_rfid)
      else
        render json: {errors: @antenna_reader_rfid.errors.full_messages, status: false}
    end
  end

我收到错误 AbstractController :: DoubleRenderError

在此操作中多次调用渲染和/或重定向 . 请注意,您只能调用渲染或重定向,每次操作最多一次 . 另请注意,重定向和呈现都不会终止操作的执行,因此如果要在重定向后退出操作,则需要执行类似“redirect_to(...)并返回”的操作 .

我怎么解决这个问题?

3 回答

  • 1

    要处理多种请求格式,您可以使用respond_to

    if @antenna_reader_rfid.save
      respond_to do |format|
        format.json { render json: { status: true } }
        format.html { redirect_to where_you_want_path }
      end
    else
      # same way as above
    end
    

    respond_to 块中,您可以根据需要呈现所有请求格式,然后根据请求标头,控制器将选择相应的逻辑来响应您 .

  • 0

    您必须删除行 render json: {status: true} ,因为您正在尝试使控制器呈现json并同时重定向到HTML页面 . 你必须选一个 .

  • 2

    您不能在方法中渲染或返回多次 .

相关问题