You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby on Rails多对一关系下“最佳10条结果”路由配置咨询

Rails 实现指定Task的Top10 Results路由方案

完全可以按照你的需求实现,以下是几种对应不同URL格式和助手方法的配置方式:

1. 对应URL /tasks/:task_id/show_best_results + 助手best_results_for_task_path(task_id)

在config/routes.rb中添加:

get '/tasks/:task_id/show_best_results', to: 'results#best_for_task', as: 'best_results_for_task'

2. 对应URL /tasks/:task_id/show_best_results + 助手show_best_task_results_path(task_id)

调整路由的as参数即可:

get '/tasks/:task_id/show_best_results', to: 'results#best_for_task', as: 'show_best_task_results'

3. 对应URL /results/show_best_for_task/:task_id + 自定义助手名

如果想用这个URL格式,路由配置如下:

get '/results/show_best_for_task/:task_id', to: 'results#best_for_task', as: 'best_results_for_task'
# 或者换成你想要的助手名:as: 'show_best_task_results'

4. 符合Rails资源风格的嵌套路由(推荐)

如果想遵循RESTful资源设计,可以在tasks资源下嵌套这个动作:

resources :tasks do
  # URL为/tasks/:id/show_best_results,助手为best_results_for_task_path(task)
  get 'show_best_results', on: :member, to: 'results#best_for_task', as: :best_results_for_task
end

控制器实现

最后在ResultsController中添加对应的动作,处理获取Top10结果的逻辑:

class ResultsController < ApplicationController
  def best_for_task
    @task = Task.find(params[:task_id])
    # 根据你实际的排序字段调整,比如按score降序取前10
    @best_results = @task.results.order(score: :desc).limit(10)
  end
end

内容的提问来源于stack exchange,提问作者epeleg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 05:20:23