2

showフォームを使用したアクションがあるRailsアプリがあります。このアクションは、それに応じてパーシャル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" %> 

何らかの形で 、またはそのようなもののURLも確認しstore_bar_users_pathます-または、アクションのレンダリングstoreが正しくない可能性があります。

4

1 に答える 1

1

ユーザーのログイン時に設定されたセッション変数にユーザー タイプを格納します。その後、ロードし続ける必要はなく、すべてのコントローラー、ビュー、およびヘルパーに表示されます。この変数を使用して、パーシャルを表示するかどうかを決定します。

于 2012-06-01T02:57:42.193 に答える