あなたにそれを書いて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
で、新しい奇妙なロジックがなくても、かなりうまく機能するようになります。
UPD 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) %>