Я бы хотел определить метод, который доступен как для моих представлений , так и для моих моделей
Скажем, у меня есть помощник вида:
def foo(s)
"hello #{s}"
end
Представление может использовать помощника следующим образом:
<div class="data"><%= foo(@user.name) %></div>
Однако этот <div>
будет обновляться повторяющимся вызовом AJAX.Я использую вызов to_json
в контроллере, который возвращает данные следующим образом:
render :text => @item.to_json(:only => [...], :methods => [:foo])
Это означает, что мне необходимо определить foo
в моей модели Item
:
class Item
def foo
"hello #{name}"
end
end
Было бы неплохо, если бы у меня был DRY метод, которым можно было бы поделиться в и моих представлениях и моих моделях.
Использование можетвыглядят так:
Помощник
def say_hello(s)
"hello #{s}"
end
Модель User.rb
def foo
say_hello(name)
end
Модель Item.rb
def foo
say_hello(label)
end
Просмотр
<div class="data"><%= item.foo %></div>
Контроллер
def observe
@items = item.find(...)
render :text => @items.to_json(:only=>[...], :methods=>[:foo])
end
Я не знаю лучший способ справиться с этим, но я не хочу полностью идти против лучших практик здесь.
Еслиты можешь придумать лучший способ, я очень хочу учиться!