0

2つのコントローラーで使用されるモデルが1つあります。1つは通常のユーザー、もう1つは管理者ユーザーです。新規/作成、編集/更新のアクションは、両方のコントローラーで同じです。すべてのアクションで使用される共有ビューがありますが、問題はその共有ビューのform_forにあります。通常のユーザーの場合は次を使用する必要があります。

form_for @my_model, do |f| 

管理者の場合、次を使用する必要があります。

form_for [:admin, @my_model] do |f|

2つのコントローラーでビューを再利用するにはどうすればよいですか?たぶんこれを設計するより良い方法がありますか?

4

3 に答える 3

1

あなたのデザインパターンが最適かどうかはわかりません。ビューを共有するためにパーシャルを使用していると思いますが、実際にはlocalsパーシャルにパラメーターを渡すことができますrender:

# user
<%= render :partial => "form", :locals => { :zone => @my_model } %>

# admin
<%= render :partial => "form", :locals => { :zone => [:admin, @my_model] } %>

# your form_for tag in the shared view
form_for(zone) do |f|

これが機能するかどうかはわかりませんが、ご参考になれば幸いです。

これには、管理名前空間メソッドを使用してみてください。

于 2012-08-14T08:49:21.247 に答える
0

partialを思い出す必要があると思います。

于 2012-08-14T08:47:07.520 に答える
0

私の知る限り、コントローラーは基本的に同じです (新規/作成、編集/更新)。ユーザーが管理者であるかどうかをテストしてから、破棄アクションへのアクセスを許可するbefore_filterを追加することをお勧めします。(これは異なる方法だと思います)。

#Controller
before_filter :admin => :only => [:destroy]
于 2012-08-14T12:12:08.190 に答える