0

home.html.erbファイルに次のコードがあります。

<!-- if seeker is logged in show button "Grab it" -->
<% if user_signed_in? %>
<div class="grabit alignright">
<small>want to work on this?</small>
<!-- if seeker is not logged in, show him the output text of "Sign in to work on this job" -->
<% else %>
<small>are you a guru? want to work on this? Sign up.</small>
<% end %>
</div>

ご覧のとおり、私はSeekerをユーザーロールとして使用しようとしています。そのタイプのロールを持つそのタイプのユーザーがサインインしているかどうかに応じて、異なるコンテンツが表示されます。

Devise+CanCanをインストールしています。今、これは非常に新しく、私はこれを行う方法を確認するために全体を見てきました。通常のユーザーの役割を持つ「ユーザー」とシーカーの役割を持つ「シーカー」があります。上記のコードを使用すると、ユーザーがサインインしたときにのみ表示され、シーカーは表示されません。

それは同じくらい簡単seekers_signed_inですか?私が使うべきだと?と比較しuser_signed_inますか?ユーザーとシーカーおよび管理者の両方のDeviseビューを生成しました。管理者は、ユーザーとシーカーの削除、更新などを行うことができます。ユーザーはアイテムを投稿し、シーカーはそれらを取得します。

誰か助けてもらえますか?

4

1 に答える 1

0

Users&Seekers(2つのデバイスモデル)を作成する必要はありません。代わりに、共通のモデルを1つだけ作成し、それをUserと呼び、必要な数の役割を追加できます。

役割の構成を簡単にするために、このgemを使用することをお勧めします。

次に、あなたhome.html.erbは単に次のことをします:

<!-- if seeker is logged in show button "Grab it" -->
<% if user_signed_in? && current_user.is_seeker? %>
<div class="grabit alignright">
<small>want to work on this?</small>
<!-- if seeker is not logged in, show him the output text of "Sign in to work on this job" -->
<% else if !user_signed_in?%>
<small>are you a guru? want to work on this? Sign up.</small>
<% else%>
<small>You are not a seeker, you need to be a seeker!</small>
<% end %>
</div>

CanCanはコントローラーレベルで使用されるため、上記のアプローチは簡単で直接的なケースです。

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

于 2012-12-30T09:02:05.457 に答える