0

ビューからコントローラーからインスタンス変数を設定しようとしています。例えば:

class UsersController

def new
  @admincheck = false
end

ビュー内:home.html.erb

<%= link_to "Sign up", signup_path, @admincheck => true, :class => "signup_button round" %>

ビューで@admincheckをtrueに設定すると、UsersControllerはtrueである@admincheckを受信することでそれに応答しますか?

コントローラが使用するビューでインスタンス変数の値を割り当てることができるかどうかわかりません。ありがとう

4

4 に答える 4

1

コントローラーのビューからインスタンス変数を設定することはできません。リクエスト応答サイクルに関して考えてみましょう:

ブラウザ -> リクエスト -> コントローラ -> ビュー -> レスポンス -> ブラウザ

ビューからコントローラーに何かを渡したいのですが、上の図ではビューが下にあるため、変数をコントローラーに渡すことができません。代わりに、データをフォームフィールドとして渡し、コントローラーで同じものをキャプチャする必要がありますPravin と Ashhsh によって提案されました。

于 2011-03-19T21:51:29.947 に答える
1

コントローラーのビューでインスタンス変数を設定することはできません。これを行う代わりに、ビューからコントローラーにパラメーターを渡すことができます。管理者のみが「サインアップ」できるようにするチェックを追加したいと思います。このために、コントローラで現在のユーザー ステータスを確認して続行できます。

于 2011-03-04T06:51:01.953 に答える
1

そのようなことを処理するには、フィルターを使用してみてください。次のリクエストの認証決定を処理するのは、ビューの責任であってはなりません。

正確に何をしたいですか?

于 2011-03-04T06:58:06.340 に答える
1

次のようにするだけです。

<%= link_to "Sign up", signup_path(:admincheck => true), :class => "signup_button round" %>

admincheck次に、コントローラーで次のように取得できます@admincheck = params[:admincheck]

于 2011-03-04T07:39:53.247 に答える