Ruby on rails Rails使用两个动作的定义?

Ruby on rails Rails使用两个动作的定义?,ruby-on-rails,Ruby On Rails,有没有办法对两个动作使用相同的定义 像这样的 def index2, index5 @workgroups = Workgroup.all if params[:workgroup] @workgroup = Workgroup.find(params[:workgroup]) end respond_to do |format| format.html # index.html.erb format.json { render json: @workg

有没有办法对两个动作使用相同的定义

像这样的

def index2, index5
  @workgroups = Workgroup.all
  if params[:workgroup]
    @workgroup = Workgroup.find(params[:workgroup])
  end

  respond_to do |format|
    format.html # index.html.erb
    format.json { render json: @workgroups }
  end
end

您可以将这两个URL路由到同一个操作。
config/routes.rb
do上:

get 'controller/index5', to: 'controller#oneindex'
get 'controller/index2', to: 'controller#oneindex'
三个解决方案

1制定通用方法

我更喜欢这种方法,因为如果你想改变什么

def index5
  common_method_name
end

def index2
  common_method_name
end

private
def common_method_name
  # common code
end
2别名

def index5
  # your code
end

alias_method :index2, :index5
3条路线

def index5
  # your code
end

alias_method :index2, :index5

您可以在
config/routes.rb
中将这两个URL路由到相同的操作(源Murifox的答案


使用alias,或者从另一个.Reddirt调用其中一个,如果您不知道,这将在
config/routes.rb
中定义。