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

时间:2012-06-01 01:05:25

标签: ruby-on-rails ruby-on-rails-3

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

提交表单后,它会在同一个控制器(store)中触发另一个操作。我遇到的问题是,当提交时出现错误时,store会在不引用用户的情况下呈现show,因此部分不会出现,因为user_type不等于admin(因为它找不到用户)。但是,由于访问'show'受到保护,我想知道是否有办法检查网址。

实施例: 表格是:

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

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

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

show.html.erb视图包含:

<%= 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操作中:

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

所以我想知道的是我是否可以改变条件:

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

以某种方式也检查store_bar_users_path的网址,或类似的网址 - 或者store操作中的渲染可能不正确。

1 个答案:

答案 0 :(得分:1)

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