我可以在耙子中使用助手方法嗎?如何在佣金中使用傭工?
回答
是的,可以。你只需要求助手文件,然後在你的rake文件中包含這個助手(實際上這個助手是我們可以包含的一個mixin)。
例如,在這裏我有一個application_helper文件中應用程序/傭工目錄中包含此:
module ApplicationHelper
def hi
"hi"
end
end
所以這裏是我的耙文件的內容:
require "#{Rails.root}/app/helpers/application_helper"
include ApplicationHelper
namespace :help do
task :hi do
puts hi
end
end
這裏是對我的終端結果:
god:helper-in-rake arie$ rake help:hi
hi
如前所述lfender6445,使用include ApplicationHelper
,在阿里的答案,會污染包含你的任務頂層範圍。
下面是一個替代的解決方案,避免了不安全的副作用。
首先,我們應該不是把我們的任務助手在app/helpers
。在codefol.io從"Where Do I Put My Code?"引用:
Rails的「助手」都非常明確視圖助手。它們自動包含在視圖中,但不包含在控制器或模型中。這是有意的。
由於app/helpers
是用於視圖助手,而Rake任務不是視圖,我們應該把我們的任務助手放在其他地方。我建議lib/task_helpers
。
在lib/task_helpers/application_helper.rb
:
module ApplicationHelper
def self.hi
"hi"
end
end
在你Rakefile
或.rake
文件lib/tasks
:
require 'task_helpers/application_helper'
namespace :help do
task :hi do
puts ApplicationHelper.hi
end
end
我不知道如果這個問題本來詢問,包括鑑於耙任務助手,或者只是Rake任務的「輔助方法」。但是,跨視圖和任務共享助手文件並不理想。相反,把你想在都視圖和任務使用助手,並將其移動到既是一個視圖助手,並在任務幫手包括一個單獨依賴。
這解決了我 - 如果你想傳遞參數的輔助方法,你將無法做到這一點,除非你已經完成了排序範圍 – 2016-06-21 16:24:11
我想知道如果將它稱爲application_helper是一個好主意。因爲它可能會導致混淆。也許只是'lib/task_helpers.rb'會更好。 – 2017-12-20 03:43:20
這是一個很好的和安全的方式...謝謝.... – prasanthrubyist 2018-01-17 12:47:17
- 1. 使用傭工Meteorjs
- 2. 用金額閾值計算佣金
- 3. 流星:傭工
- 4. 使用分層佣金結構
- 5. 使用case語句來生成佣金
- 6. 付款保持佣金
- 7. 購買SDK JavaScript,佣金?
- 8. 自動分銷商佣金
- 9. API幫助佣金聯結
- 10. 每月佣金計算PHP
- 11. 計算累計佣金額
- 12. OFBiz的佣金如何運作?
- 13. 詹金斯佣金任務問題
- 14. 定製傭工笨
- 15. 僅加載傭工
- 16. 通過貝寶支付用戶佣金
- 17. 訪問URL傭工routes.rb中
- 18. UNESCAPE HTML在灰燼傭工
- 19. 使用Quickbooks SDK:我們應該如何導入佣金?
- 20. 早該傭工不工作
- 21. 使用收集傭工流星表格
- 22. 重寫範圍使用ActiveRecord傭工
- 23. 銷售佣金數據庫設計
- 24. 收銀員佣金報告AX 2012
- 25. 佣金基礎支付網關
- 26. 計算線性佣金 - 尋找公式
- 27. 如何添加傭工的fancybox
- 28. 如何寫傭工新咕嚕0.4
- 29. select_tag傭工grouped_options_for_select爲了
- 30. 質疑座傭工Handlebars.js
小心,使用'耙內include',在你不經意間污染'Object',這屈從所有後續進口耙任務共享相同的方法的範圍。 – lfender6445 2014-04-16 06:00:26
隨後導入的rake任務是什麼意思?正如rake其他.rake文件中的任務也可以訪問ApplicationHelper方法? – 2014-10-18 17:51:13
據說和說,但它不能說足夠了......你真的不應該這樣做,特別是在Rails應用程序(廣泛使用Rake)中。它與全球的「對象」混雜在一起,這可能產生深遠的影響,而這些影響可能非常難以追查。剛剛失去了兩個小時... – nrser 2017-09-27 15:50:30