Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 带有两个单词的模型的Rails位置_Ruby On Rails_Ruby_Rest - Fatal编程技术网

Ruby on rails 带有两个单词的模型的Rails位置

Ruby on rails 带有两个单词的模型的Rails位置,ruby-on-rails,ruby,rest,Ruby On Rails,Ruby,Rest,我正在用RubyonRails做一个API后端 我有一个模型,叫它TestModel。当用户创建此方法的新记录时,我希望返回一个位置标题,其中包含新创建对象的URL(即用户可以使用GET访问它的位置),因此我尝试 render json: @test_model, status: :created, location: @test_model 不幸的是,rails无法给我位置,因为他似乎试图调用一个方法test\u model\u url,rails似乎将该方法解释为对象model的url,作

我正在用RubyonRails做一个API后端

我有一个模型,叫它
TestModel
。当用户创建此方法的新记录时,我希望返回一个
位置
标题,其中包含新创建对象的URL(即用户可以使用GET访问它的位置),因此我尝试

render json: @test_model, status: :created, location: @test_model
不幸的是,rails无法给我位置,因为他似乎试图调用一个方法
test\u model\u url
,rails似乎将该方法解释为对象
model
的url,作为项
test
的子对象


我如何才能正确地做到这一点?

这与模型命名无关,更多的是与ruby on rails如何按照约定工作有关。参见本规范(尤其是第2.3部分)

这些帮助程序中的每一个都有一个对应的_url帮助程序(例如照片_url),该帮助程序返回相同的路径前缀,并带有当前主机、端口和路径前缀

->您必须正确设置路由,然后_url和_路径帮助程序才能工作


您还应该遵守,因此您的模型应该命名为
TestModel
,而不是
TestModel

我实际上将我的模型命名为
TestModel
,这只是一个输入错误。现在我有了一个路由
参考资料:test_model
,我想得到一个类似
http://myhost.com/test_model/:id
,所以我尝试调用
test\u model\u url
,但他似乎试图找到一条像
test/:id/model
这样的路径,但它不存在。我认为应该是
资源:test\u models
。您可以运行
rake routes
查看设置了哪些路由。同样,输入错误。我使用了
参考资料:test_models
好的,澄清一下,当你说API backend时,你指的是一个精简的Rails API项目(如Rails缺少几个有用的模块版本)?你试过这个
位置:test_model_url(@test_model)
?是的。它以
undefined method
test\u model\u url`响应这听起来像是由印刷错误引起的-确保您的模型命名正确,路由等正确。因为我怀疑它是否可以复制。