2013-04-25 2 views
1

Скажите, что у меня есть раздел комментариев и когда пользователь вводит комментарий, если пользователь не вошел в систему, я хочу показать форму знака в модальном поле. Как только пользователь войдет в систему, он должен продолжить публикацию комментария. Я попробовал следующее, но вместо этого перенаправляет страницу регистрации. Какие-либо предложения? Благодаря!Как перенаправить, чтобы открыть модальный

CommentsController

Защиту создать если! User_signed_in?
redirect_to (new_user_session_path,: удалённое => верно,: данные => {: цель => "#signin",: переключение => "модальный"}) еще ### продолжать создавать конец

end

ответ

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 modal, когда нажаты ссылки с атрибутом «#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 
+0

но таким образом каждая ссылка на частную область Мне нужно проверить, зарегистрирован ли пользователь или нет. Есть ли способ сделать это автоматически? возможно, только внутри метода before_filter. @marquez –