导轨 - 正确的位置

时间:2017-03-08 22:36:48

标签: ruby-on-rails ruby-on-rails-4 routes

我在'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)    

1 个答案:

答案 0 :(得分:1)

当您在命令行上运行rake routes时...它认为路径路径会变成什么?

我问因为经常会有细微差别:) 在这种情况下 - 您使用的两条路线都需要将messages部分复数化。