5 Stimmen

Schienen: Create-Methode in allen Ansichten und allen Modellen verfügbar

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!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X