ich weiß zwar, dass Sie einen Helfer in einer Ansicht verwenden sollen, aber ich brauche einen Helfer in meinem Controller, da ich ein JSON-Objekt zum Erstellen von Objekten konstruiere.
Es geht ein bisschen so:
def xxxxx
@comments = Array.new
@c_comments.each do |comment|
@comments << {
:id => comment.id,
:content => html_format(comment.content)
}
end
render :json => @comments
end
wie kann ich auf meinen html_format
-Helfer zugreifen?
Hinweis: Dies wurde vor 2 Tagen in den Rails geschrieben und akzeptiert; Heutzutage ist die Antwort von Grosser (unten) der richtige Weg.
Option 1: Die einfachste Möglichkeit ist, Ihr Hilfsmodul in Ihre Steuerung aufzunehmen:
class MyController < ApplicationController
include MyHelper
def xxxx
@comments = []
Comment.find_each do |comment|
@comments << {:id => comment.id, :html => html_format(comment.content)}
end
end
end
Option 2: Oder Sie können die Hilfsmethode als Klassenfunktion deklarieren und wie folgt verwenden:
MyHelper.html_format(comment.content)
Wenn Sie es als Instanz- und Klassenfunktion verwenden möchten, können Sie beide Versionen in Ihrem Helper deklarieren:
module MyHelper
def self.html_format(str)
process(str)
end
def html_format(str)
MyHelper.html_format(str)
end
end
Hoffe das hilft!
Sie können verwenden
In Rails 5 verwenden Sie den helpers.helper_function
in Ihrer Steuerung.
Beispiel:
def update
# ...
redirect_to root_url, notice: "Updated #{helpers.pluralize(count, 'record')}"
end
Quelle: Aus einem Kommentar von @Markus zu einer anderen Antwort. Ich hatte das Gefühl, dass seine Antwort es verdient hatte, da es die sauberste und einfachere Lösung ist.
Mein Problem wurde mit Option 1 gelöst. Die einfachste Möglichkeit besteht darin, Ihr Hilfsmodul in Ihren Controller aufzunehmen:
class ApplicationController < ActionController::Base
include ApplicationHelper
...
Wenn der Helfer in (nur) Controllern verwendet werden soll, bevorzuge ich es als Instanzmethode von class ApplicationController
.
In Rails 5+ können Sie die Funktion wie folgt mit einem einfachen Beispiel verwenden:
module ApplicationHelper
# format datetime in the format #2018-12-01 12:12 PM
def datetime_format(datetime = nil)
if datetime
datetime.strftime('%Y-%m-%d %H:%M %p')
else
'NA'
end
end
end
class ExamplesController < ApplicationController
def index
current_datetime = helpers.datetime_format DateTime.now
raise current_datetime.inspect
end
end
AUSGABE
"2018-12-10 01:01 AM"
class MyController < ApplicationController
# include your helper
include MyHelper
# or Rails helper
include ActionView::Helpers::NumberHelper
def my_action
price = number_to_currency(10000)
end
end
Verwenden Sie in Rails 5+ helpers ( helpers.number_to_currency (10000) )