Ruby on rails 带有查询字符串的路由被传递到错误的控制器操作
使用我的rails api。目前,如果我对/seasons/2执行get请求,我会通过seasons控制器show action正确地返回一个json,其中包含id=2的季节表项 但是当我点击/seasons?id=2的get请求时,会返回一个json,其中包含所有季节资源,并点击控制器索引操作,而不是show操作 以下是我的路线: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.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路径用于确定要调用哪个控制器方法之后考虑的。