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
が正しくない可能性があります。