假設我有一個功能trim_string(串),我想在我的Rails應用程序使用,在這兩個模型和控制器。如果我把它放在應用程序助手中,它會進入控制器。但通常情況下,模型中不需要應用程序助手。那麼你在哪裏放置了你想要在模型和控制器中使用的通用代碼?在Rails,放在哪裏有用的功能,這兩個控制器和模型
5
A
回答
5
在回答具體問題「在哪裏你把你想要在這兩個模型和控制器使用通用的代碼?」:
把它放在lib文件夾。 lib文件夾中的文件將被加載,其中的模塊將可用。
更詳細,使用問題的具體例子:
# lib/my_utilities.rb
module MyUtilities
def trim_string(string)
do_something
end
end
然後在控制器或模型,你想要這個:
# models/foo.rb
require 'my_utilities'
class Foo < ActiveRecord::Base
include MyUtilities
def foo(a_string)
trim_string(a_string)
do_more_stuff
end
end
# controllers/foos_controller.rb
require 'my_utilities'
class FoosController < ApplicationController
include MyUtilities
def show
@foo = Foo.find(params[:id])
@foo_name = trim_string(@foo.name)
end
end
1
它看起來像你想的有方法String類比「trim_string」函數更好地「修剪」自己,對吧?你不能使用strip方法嗎? http://www.ruby-doc.org/core-2.1.0/String.html#method-i-strip
您可以在一個初始化添加新方法的字符串類,請在此In Rails, how to add a new method to String class?
class String
def trim
do_something_and_return_that
end
def trim!
do_something_on_itself
end
end
這樣,你可以這樣做:
s = ' with spaces '
another_s = s.trim #trim and save to another
s.trim! #trim itself
但檢查String類,它看起來像你已經擁有你所需要的有
相關問題
- 1. 我的控制器的有用功能應該放在Rails中哪裏?
- 2. CakePHP:在哪裏放置這個功能
- 3. 在哪裏把模型「實用」功能在Ruby on Rails
- 4. 從控制器的功能放置在一個服務和使用這些功能從另一個控制器
- 5. Rails負載控制器,模型等在哪裏?
- 6. rails控制器/窗體 - 在哪裏構建嵌套模型?
- 7. JavaScript:在哪裏放置原型功能
- 8. Ruby on Rails的,請從模型的功能在控制器
- 9. 在哪裏創建用戶(模型)的色器件控制器
- 10. Rails 4:單獨的模型和控制器功能與驗證
- 11. 把根控制器放在哪裏?
- 12. Rails模型和控制器
- 13. Laravel 5.2.45 Auth控制器和模型在哪裏?
- 14. 這個功能在哪裏等待?
- 15. Rails:跨多個模型的驗證,放在哪裏?
- 16. Rails XML解析 - 我應該把這個功能放在控制器或模型中嗎?
- 17. 兩個層次的模型和控制器Rails中
- 18. Rails 3使用兩種模型和控制器製作窗體
- 19. 我在哪裏把這個jQuery放在rails應用程序中
- 20. 你在哪裏放既不控制器,模型或助手類的ViewModels?
- 21. 的Rails:在哪裏把所有控制器
- 22. 在哪裏把我的疑問 - 模型與控制器
- 23. rails 3 - 多個控制器之間共享的代碼 - 在哪裏放置它?
- 24. ,你在哪裏繪製控制器和模型之間的界限?
- 25. 在哪裏釋放一個塊的視圖控制器
- 26. 我應該在哪裏放置輸出字段描述,控制器或模型?
- 27. rails:檢查從模型中調用哪個控制器方法
- 28. 放置模型的方法在哪裏?
- 29. 我會在哪裏放置一個將在我的模型/視圖/控制器中使用的方法/變量?
- 30. MVC在哪裏邏輯去控制器或查看模型
我覺得猴子修補串給用戶的功能來操縱模型和控制器提供一個字符串,聽起來人非常極端。 –
它看起來像一些函數綁定到字符串(名稱是trim_string !!),爲什麼沒有那個字符串類?我認爲這取決於OP的需求 – arieljuod
所以,我聽到你在說什麼 - 但它只是一個操縱字符串的方法,並且我們不傾向於僅僅因爲一個方法操縱而進入猴子修補核心類的級別該類型的數據。如果存在更簡單的解決方案,通常認爲最好避免猴子修補核心類。在這種情況下,用戶只需要一種可用於控制器和模型的方法,這就是問題所在。因此,問題的正確答案是將這樣的共享方法放在lib中的模塊中,而不是習慣性地修改核心類。那是我的想法,但是ymmv。 –