Ich würde gerne eine Methode definieren, die sowohl in meinem Ansichten und mein Modelle
Angenommen, ich habe einen View-Helper:
def foo(s)
"hello #{s}"
end
Eine Ansicht könnte die Hilfsfunktion wie folgt verwenden:
<div class="data"><%= foo(@user.name) %></div>
Allerdings ist diese <div>
wird mit einem wiederholten Ajax-Aufruf aktualisiert. Ich verwende eine to_json
Aufruf in einem Controller gibt Daten wie folgt zurück:
render :text => @item.to_json(:only => [...], :methods => [:foo])
Das bedeutet, dass ich Folgendes haben muss foo
definiert in meinem Item
auch das Modell:
class Item
def foo
"hello #{name}"
end
end
Es wäre schön, wenn ich eine DRY Methode, die gemeinsam genutzt werden könnte in beide meine Ansichten und meine Modelle.
Die Verwendung könnte folgendermaßen aussehen:
Helfer
def say_hello(s)
"hello #{s}"
end
User.rb Modell
def foo
say_hello(name)
end
Item.rb model
def foo
say_hello(label)
end
Siehe
<div class="data"><%= item.foo %></div>
Controller
def observe
@items = item.find(...)
render :text => @items.to_json(:only=>[...], :methods=>[:foo])
end
Ich weiß nicht, wie ich das am besten handhaben soll, aber ich möchte hier nicht völlig gegen bewährte Praktiken verstoßen.
Wenn Ihnen ein besserer Weg einfällt, bin ich sehr daran interessiert, ihn zu erfahren!