Rails 路由 - 嵌套资源的上下文 url
Rails routes - context for nested resource url
我正在尝试为嵌套资源的显示操作创建嵌套路径
user.rb
has_many :fan_receives, as: :fanzone_owner, class_name: "FanActivity"
fan_activity.rb
belongs_to :fanzone_owner, polymorphic: true
在我的routes.rb
match ":fanzone_owner_id/posts/:id", to: "fan_activities#show", via: :get
路径有效,但 fanzone_owner_id 可以是任何东西。例如,
示例。com/1/fan_activities/2 有效
例如。com/2/fan_activities/2 也有效
例如。com/anythingatall/fan_activities/2 也有效
我想做到 url 的 fanzone_owner_id 必须匹配 fan_activity 的外键,否则我们重定向到 404。
我会在控制器中对 url 进行验证检查吗?我不确定这种做法是否正确
根据我建议使用的信息 nested routes。
resources :fanzone_owner do
resources :fan_receive
end
为此,你也应该 nested attributes ready, otherwise the above routing would make no sense at all. This tutorial 可能会有所帮助。
我知道出了什么问题。我只需要使用控制器中 url 的参数来执行显示操作。
在fan_activities_controller.rb
@user = User.find(params[:fanzone_owner_id])
@fan_activity = @user.fan_receives.find(params[:id])
如果找不到用户或用户不是 fanzone_owner,那么它将是 404。
我正在尝试为嵌套资源的显示操作创建嵌套路径
user.rb
has_many :fan_receives, as: :fanzone_owner, class_name: "FanActivity"
fan_activity.rb
belongs_to :fanzone_owner, polymorphic: true
在我的routes.rb
match ":fanzone_owner_id/posts/:id", to: "fan_activities#show", via: :get
路径有效,但 fanzone_owner_id 可以是任何东西。例如,
示例。com/1/fan_activities/2 有效
例如。com/2/fan_activities/2 也有效
例如。com/anythingatall/fan_activities/2 也有效
我想做到 url 的 fanzone_owner_id 必须匹配 fan_activity 的外键,否则我们重定向到 404。
我会在控制器中对 url 进行验证检查吗?我不确定这种做法是否正确
根据我建议使用的信息 nested routes。
resources :fanzone_owner do
resources :fan_receive
end
为此,你也应该 nested attributes ready, otherwise the above routing would make no sense at all. This tutorial 可能会有所帮助。
我知道出了什么问题。我只需要使用控制器中 url 的参数来执行显示操作。
在fan_activities_controller.rb
@user = User.find(params[:fanzone_owner_id])
@fan_activity = @user.fan_receives.find(params[:id])
如果找不到用户或用户不是 fanzone_owner,那么它将是 404。