Ruby on rails 带有查询字符串的路由被传递到错误的控制器操作

Ruby on rails 带有查询字符串的路由被传递到错误的控制器操作,ruby-on-rails,rails-routing,rails-api,Ruby On Rails,Rails Routing,Rails Api,使用我的rails api。目前,如果我对/seasons/2执行get请求,我会通过seasons控制器show action正确地返回一个json,其中包含id=2的季节表项 但是当我点击/seasons?id=2的get请求时,会返回一个json,其中包含所有季节资源,并点击控制器索引操作,而不是show操作 以下是我的路线: Rails.application.routes.draw do root to: 'application#not_found' resources

使用我的rails api。目前,如果我对/seasons/2执行get请求,我会通过seasons控制器show action正确地返回一个json,其中包含id=2的季节表项

但是当我点击/seasons?id=2的get请求时,会返回一个json,其中包含所有季节资源,并点击控制器索引操作,而不是show操作

以下是我的路线:

Rails.application.routes.draw do
  root to: 'application#not_found'
  
  resources :seasons do
    
  end


end

季节控制员:


class SeasonsController < ApplicationController
  before_action :set_season, only: [:show]

  def index
    @seasons = Season.all
    json_response(@seasons)
  end

  def show
    json_response(@season)
  end

  private

  

  def set_season
    @season = Season.find(params[:id])
  end
end

类季节控制器<应用程序控制器
行动前:设置季节,仅:[:显示]
def索引
@季节
json_响应(@seasons)
结束
def秀
json_响应(@seasure)
结束
私有的
def set_季节
@季节=季节.查找(参数[:id])
结束
结束
我认为rails路由应该在默认情况下将/seasons/2和/seasons?id=2分配给show controller操作

// routes.rb

....
resources :seasons, only: [:index, :show]
...
之后,使用以下命令检查终端上的路由:

rails routes

对不起,这样不行
GET/seasures
是一个
#index
调用,
GET/seasures/:id
是一个
#show
调用。查询(
?id=2
)是在URL路径用于确定要调用哪个控制器方法之后考虑的。