1

コメント セクションがあり、ユーザーがコメントを入力したときに、ユーザーがログインしていない場合、サインイン フォームをモーダル ボックスに表示したいとします。ユーザーがログインすると、コメントの投稿に進む必要があります。以下を試しましたが、代わりにサインアップページをリダイレクトしています。助言がありますか?ありがとう!

コメントコントローラー

def create if !user_signed_in?
redirect_to(new_user_session_path, :remote=>true, :data => { :target => "#signin", :toggle => "modal"}) else ### 作成を続行 end

終わり

4

1 に答える 1

0

私の提案は、パーシャル セット内にモーダルを で非表示にすることdisplay: noneです。

application.html.erbユーザーがログに記録されていない場合は、レイアウト ビュー ( )でレンダリングします。

<% unless user_signed_in? %>
   <%= render :partial => "signin_modal" %>
<% end %>

ログに記録されていないユーザーからリンクを保護する場合は、次のような条件でリンクをラップします。

<% user_signed_in? ? url = your_create_comment_action_path : url = "#signin" %>
<%= link_to "Comment", url %>

最後に、"#signin" href 属性を持つリンクがクリックされたときにサインイン モーダルを開くイベントを設定します。jQuery を使用:

$(document).on("click", "a[href='#signin']", function () {
    $("#SIGNIN_MODAL_ID").modal("show")
})

もちろん、before_filterコメント作成アクションのルールを追加して、コントローラーも保護する必要があります。

before_filter :check_unsigned_user, :only => [:create]

def check_unsigned_user
   unless user_signed_in?
      # make what you want
   end
end
于 2013-04-26T02:24:04.520 に答える