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
中定义。