将其写入您的ApplicationController
并将其定义为 helper_method。
例如
class ApplicationController < ActionController::Base
helper_method :current_time
def current_time
Time.now
end
end
现在您可以current_time
在控制器或视图中到处调用。
您也可以编写单独的模块/类并在那里定义您的辅助方法。比您也应该将此文件包含在您ApplicationController
的
更改主题后的UPD
我没有考虑你的实际问题。但我可以说你的方法在这里是最好的。
您应该创建新资源,而不是创建难以测试的新功能。因此,创建新资源(控制器):版本并围绕此控制器进行操作。
例如它是如何工作的:
/versions/pages/132
/versions/comments/1003
如何实现:
match "/versions/:model/:id", :to => "versions#index"
在您的控制器中:
class VersionsController < ActionController::Base
def index
@object = my_type.find(params[:id])
@versions = @object.versions
end
private
def my_type
params[:model].constantize
end
end
当然,您可以按照自己的方式更改路线:
match "/:model/:id/versions", :to => "versions#show"
所以现在你的漂亮/pages/testpage/versions
对你来说会很好,没有任何新的奇怪逻辑。
更新 2
想象一下你有这条路线:
match "/:model/:id/versions", :to => "versions#index", :as => :versions
这个对象:
@page = Page.last
@hotel = Hotel.find(123)
@comment = @page.comments.first
我们将如何为版本创建链接:
<%= link_to "Versions of this page", versions_path(:model => @page.class.to_s, :id => @page.id) %>
<%= link_to "Versions of this hotel", versions_path(:model => @hotel.class.to_s, :id => @hotel.id) %>
<%= link_to "Versions of this comment", versions_path(:model => @comment.class.to_s, :id => @comment.id) %>