2009-06-03 19 views
3

私のアプリケーションでうまく動作する単一のテーブル継承があります。私はスーパータイプのユーザーを継承する2つのユーザーサブタイプ(アスリートとカンパニー)を持っています。単一テーブル継承ルーティング?

すべてのユーザーをリストしていて、このリストの各ユーザーのプロフィールへのリンクが必要だとします。タイプがアスリートの場合はアスリートコントローラに、タイプが会社の場合はコントローラにリンクしたいと思います。これには標準的な方法がありますか?多分いくつかのルーティングトリックですか?

答えて

2

あなたもそのはるかに簡単な操作を行うことができ、Railsはそれに対処するために持っているユーザーの種類を認識するので、あなたは、インスタンス変数@userのウィッヒを持っているとしましょうと、あなたは、競技者又は会社のいずれかとすることができますそれだけでもできます

= link_to "Profile", @user 

BAM! Railsの魔法!

+0

これを行うには特別な方法でルートを設定する必要がありますか?私はエラー:未定義のメソッド 'user_path'を取得します。リンクを別のものに呼び出せますか? – Sam

+0

すべてのリソースにmap.resourcesを追加する必要があります。私はかつて両方の企業と人が接触していたので、私は自分のルートにいました。map:。 –

+0

これは私が持っている1つの問題ですが、map.resourceが設定する通常のshow /:idスキームを使いたくありません。代わりに 'home /:permalink'のようなものが欲しい。私は 'map.connect 'athletes /:action /:permalink'、:controller => 'athletes'、:action => 'home''を使用していました – Sam

-3
<% User.find(:all).each do |user| %> 
    <%= link_to "user", eval("#{user.type.underscore}_path(user)") %> 
<% end %> 

これは、(タイプフィールドに格納されている)ユーザのタイプに応じたパスを生成します。ルート設定にユーザーの種類を追加することを忘れないでください。

こちらがお役に立てば幸いです。

よろしく

+0

モデルからビューにアクセスするのは良い考えではありません... –

+0

このような評価を使用するのは一般的には良い考えではありません。 –

関連する問題