如何在Rails中检查URL或路径?

How to Check the URL or path in Rails?

我有一个Rails应用程序,其中有一个带有表单的show操作。此show操作使用一个检查if user_type =="admin"的视图,并相应地显示部分视图。对于此show视图,只有if user_type = admin可以访问它。

提交表单后,它将触发同一控制器(store)中的另一个动作。我遇到的问题是,当提交出现错误时,store会呈现show而不引用用户,因此由于user_type不等于admin(因此它不能找到用户)。但是,由于对"显示"的访问受到了保护,所以我想知道是否有一种方法可以检查URL。

示例:
表格在:

1
http://foo.com/bars/4/users/3

但是,当它失败时,渲染URL变为:

1
http://foo.com/bars/4/users/store

show.html.erb视图具有以下内容:

1
2
3
<%= form_for([:bar,@user], :url => store_bar_users_path(params[:bar_id]), :html => {:name=>"users_form",:multipart => true,:class=>"standardForm"}) do |user| %>

<%= render :partial =>"users/admin_options" if @user.user_type =="admin" %>

控制器中store操作中的

1
2
3
 if !@user.save
  render :action  =>"show" ,:layout => 'application'
 else

所以我想知道是否可以在以下条件中更改条件:

1
<%= render :partial =>"users/admin_options" if @user.user_type =="admin" %>

还要以某种方式还检查store_bar_users_path的网址,或类似的内容-或store动作中的渲染不正确。


将用户类型存储在会话变量中,在用户登录时进行设置。然后,您不必继续加载它,并且所有控制器,视图和助手都可以看到它。使用此变量来确定是否要显示部分内容。