2

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

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

示例:表格在:

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

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

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" %> 

还要以某种方式检查 urlstore_bar_users_path或类似的东西 - 或者store操作中的渲染可能不正确。

4

1 回答 1

1

将用户类型存储在会话变量中,在用户登录时设置。然后您不必一直加载它,它对所有控制器、视图和助手都是可见的。使用此变量来确定是否要显示部分。

于 2012-06-01T02:57:42.193 回答