我在'api v1'结构上设置了Rails应用程序:
module API::V1
class MessagesController < AuthenticatedAPIController
我有那个属于主题的消息控制器, 类似的东西:
namespace :api, defaults: { format: 'json' } do
namespace :v1 do
resources :topics do
resources :messages, name_prefix: 'topic_', only: [:index, :create]
end
我正在尝试设置位置,但我尝试了所有这些:
NoMethodError (undefined method `API_V1_topic_message_url' for #<API::V1::MessagesController:0x6aa5f68>):
(或类似的人)。
以下是我正在尝试的内容:
if @message.save
render json: @message, status: :created, location: [:api, :v1, @topic, @message]
我也尝试过:
location: [:api, :v1, @topic, @message]
location: [@topic, @message]
location: [@message]
location: [:API, :V1, @topic, @message]
location: api_v1_topic_message(@topic, @message)
你说出来的名字!哈哈 什么是正确的方法?
提前致谢。
编辑路线:
api_v1_topic_messages GET /api/v1/topics/:topic_id/messages(.:format) api/v1/messages#index {:format=>"json", :name_prefix=>"topic_"}
POST /api/v1/topics/:topic_id/messages(.:format) api/v1/messages#create {:format=>"json", :name_prefix=>"topic_"}
所以答案是:
api_v1_topic_messages_url(@topic)
答案 0 :(得分:1)
当您在命令行上运行rake routes
时...它认为路径路径会变成什么?
我问因为经常会有细微差别:)
在这种情况下 - 您使用的两条路线都需要将messages
部分复数化。