4

私はRubyとRailsから始めて、Devise with Rails 3を試しています。投稿のリストの周りにループがあり、それぞれにユーザーが関連付けられています。現在のユーザーに関連付けられている投稿の編集コントロールのみを表示したい。

<% @posts.each do |post| %>
  <%= link_to "show" %>
  <% if current_user = post.user %>
    <%= link_to "edit" %>
  <% end %>
<% end %>

(上記は単純化されており、メモリからのものであるため、構文が完全に正しいわけではないと確信していますが、要点はわかります。)

ログインしているユーザーがいない場合、投稿は意図したとおりに表示されます。リンクはありますShowが、リンクはありませんEditEditただし、ログインしていると、別のユーザーが作成したモミの投稿も含めて、すべてのリンクが表示されます。

コンソールで確認しましたUser.find(1) != User.find(2)が、何らかの理由で、current_user = post.user現在ログインしているユーザーに関係なく、がtrueと評価されます。これは、「実際の」userオブジェクトではなく、current_userがヘルパーであることに関係していますか?current_user比較を行うために実際の現在のユーザーを取得するにはどうすればよいですか?

ありがとう、

ダン

4

1 に答える 1

7

テストではなく割り当てを行っています--use==--ie

<% if current_user == post.user %>
于 2010-09-08T14:43:03.263 に答える