我做了一个名为api
的控制器,其中有返回数据的动作。在应用程序中,我还有一个Car
模型和一个cars
控制器(具有所有标准路由),但是我想将我使用的每个URL移到api
控制器中,并删除我未从我的应用中使用的URL。对于cars
控制器,我只使用返回所有汽车的json或返回特定汽车的json的URL(即类似index
和show
的URL )。
我的问题是,当我使用json.jbuilder
渲染汽车列表时,我还想打印那些资源的网址(show
),例如,如果我有端点/api/cars.json
我使用以下json.jbuilder
。
views / api / cars.json.jbuilder
json.array!(@cars) do |car|
json.extract! family_bond, :id, :name, :image, :description
json.url car_url(car, format: :json)
end
但是如果我从路由文件中删除car_url
,resource: car
会引发错误。这很明显,因为car_url
应该返回每辆车的show
操作URL。
所以我的问题是以下
如果我创建了一个动作来在api控制器中显示汽车的详细信息(例如/api/car.json?id=1
之类的东西),我如何告诉Rails使用此端点而不是标准端点({{1 }})当我使用car_url`方法时?
答案 0 :(得分:0)
我不认为没有一种方法可以在没有在路由中指定路由的情况下使路径和url帮助器起作用,就像您使用其他实用程序将URL路由到控制器一样。但是,如果您获得routes.rb来指定如何将URL路由到您的API,它将可以正常工作。
resource :car, controller: 'api'