ticket有可以发送消息的用户 – rails messaging

我不确定如何为私人消息构建路由。 当用户点击故障单时,它会显示故障单详细信息以及向用户发送有关故障单的消息的选项。 但是,新的消息路由看起来像users/:username/messages/new ,但它应该反映用户(发送者)正在向另一个用户(接收者)发送有关当前正在查看的故障单的消息。 如何使我的路线RESTful?

模型可以在这里找到: receiver_id not saving – rails messaging

编辑

我最终改变了我的routes.rb到:

 resources :users do resources :tickets do resources :messages end end resources :tickets 

定义多个资源有什么不利之处吗?

通常,发送消息的用户不需要在路径中表示,因为该用户是通过当前用户会话识别的,因此离开接收者,票证以及创建必须由路径。

剩余的东西可以用嵌套集合来表示,嵌套的顺序有些随意,除了消息集合应该是最深层嵌套的,因为它将接收“新”动作。 嵌套选项则是票证,收件人,邮件或收件人,票证,邮件。 对我来说,第一个嵌套似乎更直观。

…所以在你的routes.rb文件…

 resources :tickets do resources :recipients do resources :messages end end 

这将为您提供/tickets/[ticket-id]/recipients/[recipient-id]/messages/new的路径。 请注意,id不必是记录的数字ID。 您的控制器可以决定如何从参数中查找记录,并且可以在模型上定义#to_param以控制路径帮助程序方法将使用的内容。

当路由匹配该模式的路径的请求时,它将调用MessagesController#new方法,并将在#params接收值:ticket_id和:recipient_id。