如何为具有三种关系的两个模型制作轨道路线

问题描述 投票:0回答:1

我正在 Rails 中开发一个应用程序,其中有两个模型:用户和活动。用户实施装置。 情况是,一个用户可以拥有多个活动,也可以是其他用户创建的其他活动的一部分,还可以看到所有用户创建的所有活动。 我的问题是,我希望能够为这些关系中的每一种建立一个索引方法,即能够为每种类型的关系申请资源,但我不知道该怎么做。我曾考虑过命名空间、模块或范围等问题,但这些并不能真正解决我的问题,即我的用户控制器中只能有一个索引方法。

此外,我也一直在实施“原始”路线,但它给我带来了问题,例如在做时 获取“myactivities”,到:“activities#my_index” 获取“myactivities/:id”,至:“activities#my_show” 路径助手没有以良好的方式生成,将 url / 更改为 .

ruby-on-rails model devise
1个回答
0
投票

我希望这可以解决您的问题:

您可以在路由中使用嵌套资源来表示这些不同的关系。

resources :users do
  resources :owned_activities, controller: 'activities', action: 'owned_index', as: 'user_owned_activities'
  resources :participated_activities, controller: 'activities', action: 'participated_index', as: 'user_participated_activities'
  get 'all_activities', to: 'activities#all_index', as: 'user_all_activities'
end

你的控制器应该是这样的:

class ActivitiesController < ApplicationController
  def owned_index
  end

  def participated_index
  end

  def all_index
  end
end

最后,您可以像这样在视图中使用路径,我使用 slim 而不是 erb:

= link_to "My Activities", user_owned_activities_path
= link_to "Participated Activities", user_participated_activities_path
= link_to "All Activities", user_all_activities_path

请告诉我这是否是您所需要的。如果需要的话我很乐意为您提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.