1

有这样的网址

example.com/users/1376

即使用户未登录,任何人都可以看到此页面。

还有这样的网址

example.com/users/1376?mode=1

只有登录的用户才能看到这个页面,否则用户将被重定向到登录页面(new_users_session_path)

会是这样吗?

before_filter :authenticate_user!, :only => [:show(params[:mode]=1)] 

如果没有,请告诉我如何解决这个问题。

谢谢

4

2 回答 2

2

让 before_filter(rails 4 的 before_action)调用一个方法,如果该操作不应该运行,则该方法会呈现或重定向。

before_filter :test_for_mode, :only => :show

...

private
  def test_for_mode
    if (params[:mode] == '1') && !user_signed_in?
      redirect_to new_user_session_path
  end
于 2013-08-08T04:27:50.747 回答
1

对于导轨 3.2

before_filter :redirect_user, :only => :show

用于导轨 4

before_action :redirect_user, :only => :show

def redirect_user          
 if params[:mode] == 1 && current_user      
  redirect_to user_path(id: params[:id], mode: 1) #example.com/users/1376?mode=1
 elsif !current_user && params[:mode].blank?
   redirect_to user_path(id: params[:id]) 
 else  
  redirect_to new_users_session_path
 end     
end  
于 2013-08-08T04:27:25.760 回答