2017-01-31 12 views
0

のコンテキスト私は、ネストされたリソースRailsのルート - ネストされたリソースのURL

user.rb

has_many :fan_receives, as: :fanzone_owner, class_name: "FanActivity" 

fan_activity.rb

belongs_to :fanzone_owner, polymorphic: true 
のshowアクションのためのネストされたパスを作成しようとしています私のroutes.rbをで

match ":fanzone_owner_id/posts/:id", to: "fan_activities#show", via: :get 

パスは機能しますが、fanzone_owner_idは何でもかまいません。例えば、

example.com/1/fan_activities/2
example.com/2/fan_activities/2
example.com/anythingatall/fan_activities/2 ワークス作品URLのfanzone_owner_idがfan_activityの外部キーと一致する必要がありますので、私はそうでない場合、我々は404

にリダイレクト、それをしたいと思い

は、私は、URLの検証チェックでこれを行うだろうコントローラーで?このアプローチが正しいかどうかわからない

答えて

0

私は何が間違っているかを考え出しました。私はちょうどショーアクションのためのコントローラのURLからparamsを使用しなければならなかった。 fan_activities_controller.rb

@user = User.find(params[:fanzone_owner_id]) 
@fan_activity = @user.fan_receives.find(params[:id]) 

ユーザーが見つからない場合、またはユーザーがfanzone_ownerではない、それは私の場合は404

0

私はnested routesを使用することを提案した情報に基づいています。そのために

resources :fanzone_owner do 
resources :fan_receive 
end 

あなたもnested attributes準備ができて、それ以外の場合は上記のルーティングはまったく意味をなさなくなるべきでした。 This tutorialが役に立ちます。

+0

だろう場合は、物事は少し複雑になりますfanzone_ownerが多態型に設定されているため、fan_receivesは実際には 'fan_activities'という別のクラスです 入れ子になったルートを使用しようとしましたが、同じ問題が発生しました。私の目標は、fan_receivesのための ':show'ルートを持つだけで、誰がfanzone_ownerであるのかのコンテキストを表示することです。 – oniiko

関連する問題