加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在没有HTTP重定向的情况下,从另一个控制器操作

发布时间:2020-12-16 22:54:11 所属栏目:百科 来源:网络整理
导读:我希望能够基于查询参数和数据库中的数据的组合,从一个控制器动作有条件地发送到另一个控制器动作. 我现在拥有的是: class OldController ApplicationController def old_controller_action if should_use_new_controller new_params = params.dup new_para
我希望能够基于查询参数和数据库中的数据的组合,从一个控制器动作有条件地发送到另一个控制器动作.

我现在拥有的是:

class OldController < ApplicationController
  def old_controller_action
    if should_use_new_controller
      new_params = params.dup
      new_params[:controller] = "new_controller_action"
      redirect_to new_params
      return
    end
    # rest of old and busted
  end
end

class NewController < ApplicationController
  def new_controller_action
    # new hotness
  end
end

这很好用,但它会发出HTTP重定向,这很慢.我希望能够做同样的事情,但在同一个HTTP请求中.

有干净的方法吗?

编辑:赏金将转到可以向我展示干净方式的人,使控制器及其操作相对不受影响(除了重定向代码本身).

解决方法

而不是跨操作调用代码,将代码提取到lib /或其他东西,并从两个控制器调用该代码.
# lib/foo.rb
module Foo
  def self.bar
  # ...
  end
end

# posts_controller
def index
  Foo.bar
end

# things_controller
def index
  Foo.bar
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读