コントローラ内で呼び出す関数を用意したい場合、どこに配置すればよいですか?Rails 3:コントローラ内の関数を呼び出す
10
A
答えて
14
コントローラーのローカルにしたい場合は、使用するコントローラーにコントローラーを追加するだけです。
すべてのコントローラには、すべてのコントローラがサブクラス化されているため、アプリケーションコントローラ内に配置することができます。
ApplicationControllerに
protected
def myfunction
function code.....
end
あなたのビューでアクセスしたい場合、あなたは、ヘルパー
ApplicationHelper
def myfunction
function code...
end
3
class YourController < ActionController::Base
def your_action
your_function
end
private
def your_function
end
end
はまたbefore_filter
を見て、after_filter
、彼らは物事のような種類に便利だ
0
ApplicationControllerには、すべてのコントローラーはそれから継承するので、そのためにここにあります。
4
@jonniiを作成することができ、例えば、私は呼びたいです生成された一意のコードを返す関数。
あなたの生成されたコードは、あなたのコントローラに使用されようとしている場合は、保護機能(ApplicationControllerに内部でそれを置くことになる最も簡単な方法)として、コントローラ内部の機能を置きます。
ビューで関数を呼び出す必要がある場合は、ddayanのようにヘルパーに置きます。
モデルからも関数を呼び出す必要がある場合は、モジュールを/ lib /ディレクトリに配置するのが最も簡単な方法です。
# /lib/my_module.rb
module MyModule
def generate_code
1
end
end
ます。また、初期化子でそれを含める必要があります:
#/config/initializers/my_module.rb
require 'my_module'
その瞬間から、あなたはこのような関数を使用することができ、上:あなたはこれをやっている場合
MyModule::generate_code
非常に頻繁に、宝石を作ることを検討してください。
関連する問題
- 1. コントローラ内の関数内で関数を呼び出す
- 2. Laravelコントローラ - 別の関数内で関数を呼び出す
- 3. 関数内でコントローラ関数を呼び出す
- 4. ウィンドウリスナー関数内でコントローラ関数を呼び出す方法
- 5. RailsコントローラがJavascript関数を呼び出さない
- 6. anglejsのコントローラ内でjavascript関数を呼び出す方法
- 7. コントローラのスコープ内で関数を呼び出す角度指令
- 8. コントローラ内の動的引数ベースの関数呼び出し
- 9. Rails 3コントローラからヘルパーメソッドを呼び出す
- 10. コントローラ内でAjax関数を呼び出す
- 11. コントローラ内の.runのイベントリスナからの呼び出し関数
- 12. 関数内で関数内の関数を呼び出すイグナイターヘルパー
- 13. Actionscript 3 javascript関数を呼び出す
- 14. Actionscript 3で関数を呼び出す
- 15. ionicで関数を呼び出す3
- 16. kohanaの別のコントローラでコントローラ関数を呼び出す方法
- 17. Laravel関数呼び出しと同じコントローラ内での返信
- 18. Angularjsがコントローラから別のコントローラに関数を呼び出す
- 19. Rails 3では、コントローラのアクションを呼び出すHTML出力を得たい
- 20. サブミットボタン内の関数を呼び出す
- 21. スイッチ内の関数を呼び出す
- 22. コントローラ関数内で呼び出されていません。
- 23. コード内の関数内の関数を呼び出す方法
- 24. phpのクラス内の関数内で関数を呼び出す
- 25. クラス内の関数内で関数を呼び出す
- 26. オブジェクトリテラル内の関数内で関数を呼び出す
- 27. 親コントローラからの子コントローラの呼び出し関数
- 28. 関数内でnow()を呼び出す
- 29. 内にphp関数を呼び出す
- 30. 関数内で "require"を呼び出す
詳細をお知らせください。すべてのコントローラで使用できるようにしますか? – ddayan
どのような機能ですか? – jonnii
@ddayan、すべてのコントローラにはいですが、コントローラを1つに制限する方法を知ってうれしいです。 – donald