如果没有显示,请输入未定义的方法model_name_url

时间:2018-10-02 12:43:39

标签: ruby-on-rails ruby-on-rails-5

我做了一个名为api的控制器,其中有返回数据的动作。在应用程序中,我还有一个Car模型和一个cars控制器(具有所有标准路由),但是我想将我使用的每个URL移到api控制器中,并删除我未从我的应用中使用的URL。对于cars控制器,我只使用返回所有汽车的json或返回特定汽车的json的URL(即类似indexshow的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_urlresource: car会引发错误。这很明显,因为car_url应该返回每辆车的show操作URL。

所以我的问题是以下

如果我创建了一个动作来在api控制器中显示汽车的详细信息(例如/api/car.json?id=1之类的东西),我如何告诉Rails使用此端点而不是标准端点({{1 }})当我使用car_url`方法时?

1 个答案:

答案 0 :(得分:0)

我不认为没有一种方法可以在没有在路由中指定路由的情况下使路径和url帮助器起作用,就像您使用其他实用程序将URL路由到控制器一样。但是,如果您获得routes.rb来指定如何将URL路由到您的API,它将可以正常工作。

resource :car, controller: 'api'