2012-03-02 2 views
0

私のプロジェクトの各ゲームのショーページへのリンクがあります。 ゲームのuser_idが現在サインインしているユーザーのIDと一致する場合は、 に編集ボタンを表示しますそうでなければ、それは表示すべきではありません。if current_user.id = @ game.user_id

現在、次のコードセットがありますが、動作しません。すべてのゲーム には編集ボタンの表示があります。コードは次のとおりです。

<% if current_user.id = @game.user_id %> 
    <div id="text3"><%= link_to 'Edit', edit_game_path(@game) %></div><br /> 
<% end %> 

アイデアをお持ちですか?

答えて

2

MrDanAの答えは、おそらくエラーですが、このコードは、より良いようにしたいことがあります。そのようなチェックはそれを行うRailsの方法ではありません。あなたのビューで、その後

def has_game?(game) 
    self.games.exists?(:id => game.id) 
end 

と::代わりに、同様にユーザーインスタンスメソッドを作る

<% if current_user.has_game?(@game) %> ... 

(場合でも、スコープまたはように、ゲームのモデルに存在するさらに委譲することによって改善することができますあなたが好きです)

+0

このようなチェックが異なるモデルで頻繁に行われるとすれば、私はさらに一歩進んで、CanTango(https://github.com/kristianmandrup/cantango/wikin)の使用を検討します。したがって、パーミッションは1つのモジュールでキャプチャされ、モデル全体をクロスカットしません。 – Zakum

+0

これはあまりにも遠すぎます。彼は許可が必要であると仮定しています。 – Spyros

+0

そうだし、彼がすることのヒントがある。だから、もし彼が最終的に3つ以上のモデルのためにこの許可文を書くことに気づくなら、彼はカンタンゴを見ることができます。 :) – Zakum

1

あなたは==

をしたいので:

<% if current_user.id == @game.user_id %> 
+0

ありがとうございましたが、現在ログインしているユーザーに属するゲームであっても、今は表示されません。 – user1222136

+0

コントローラで@gameをどのように定義しますか? – Spyros