票证有可以发送消息的用户 - Rails消息传递



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

模型可以在这里找到:receiver_id不保存 - 轨道消息传递

编辑

我最终将我的routes.rb更改为:

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

定义多个资源有什么缺点吗?

通常,发送消息的用户不需要在路径中表示,因为该用户是通过当前用户会话标识的,因此留下了收件人、票证和创建新消息的操作,这些操作必须由路径标识。

剩下的这些东西可以用嵌套集合来表示,嵌套的顺序有点随意,除了消息集合应该是嵌套最深的,因为这是接收"新"操作的内容。嵌套的选项是票证、收件人、消息或收件人、票证、消息。对我来说,第一次嵌套似乎更直观。

。所以在你的路由.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 值。

最新更新