2012-06-01 54 views
2

我有一個Rails應用程序,其中我有一個表單show操作。此show操作使用一個視圖來檢查if user_type == "admin"並相應地顯示部分。對於此show視圖,只有if user_type = admin可以訪問它。如何檢查Rails中的URL或路徑?

提交表單後,它會觸發同一控制器中的另一個操作(store)。我遇到的問題是,當提交時出現錯誤時,store呈現show而未提及用戶,因此不會顯示partial,因爲user_type不等於admin(因爲它無法找到用戶) 。但是,由於訪問'show'受到保護,我想知道是否有方法可以檢查網址。

實施例: 形式是:

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 [email protected] 
    render :action => "show" ,:layout => 'application' 
else 

所以,我想知道是,如果我可以在更改條件:

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

以某種方式也還檢查該網址爲store_bar_users_path,或類似的東西 - 或者在渲染store操作不正確。

回答

1

將用戶類型存儲在用戶登錄時設置的會話變量中。然後,您不必繼續加載它,並且它對所有控制器,視圖和助手都可見。使用此變量來確定是否要顯示部分。