3

より多くの初心者の問題。

アプリケーションヘルパーでメソッドを定義すると、アプリコード全体で使用できることを理解しています。

私のアプリケーションヘルパーには、次のものがあります。

def primary_user_is_admin

  if current_user
    user_login_roles = JSON.parse(current_user.role)
    if user_login_roles["admin"]
      return 1
    end
  end
  return nil
end

私がcategories_controllerからそれを呼び出す場合:

if !primary_user_is_admin
  redirect_to root_url
end

エラーメッセージが表示されます:未定義のローカル変数またはメソッド `primary_user_is_admin '

これは、primary_user_is_adminコードをregistrations_helper.rbファイルに入れた場合にも発生します

ただし、いずれかのビュー(たとえば、views / user / edit.html.erb)で使用する場合

<% if primary_user_is_admin %>
<% end >

その後、それは動作します。私は何が欠けていますか?

4

2 に答える 2

10

デフォルトでは、ヘルパーはコントローラーに含まれていません。あなたはできる

include ApplicationHelper

ApplicationHelper モジュールのメソッドにアクセスするため。前の説明には、コントローラーでヘルパーにアクセスするための便利なソリューションがたくさんあります。

于 2012-06-07T16:16:23.880 に答える
4

ヘルパーで定義されたメソッドは、デフォルトではビューでのみ使用できます。コントローラーでこのメソッドにアクセスするには、アプリケーション コントローラーに「ApplicationHelper を含める」必要があります。

于 2012-06-07T16:15:16.633 に答える