Rendern von partials / view in einem rake-task / hintergrund-job / model in Rails 4

Ich habe viel gelesen über die Erbringung von Schienen Teiltöne und Ansichten in rake tasks /hintergrund-jobs /Modelle. Die überwiegende Mehrheit der Dinge, die ich gefunden habe, auf Stackoverflow und den web-beschreiben Ansätze der Arbeit in Rails 3, aber Sie scheinen veraltet und ich habe nicht um Ihnen zu arbeiten (auch mit ziemlich einige Zeit Experimentieren).

So, wie kann ich Rendern teilweise in einem hintergrund-job in Rails 4?

Hier ist der beste Ansatz, den ich habe, funktioniert so weit (nachgewiesen in der Konsole).

c = ApplicationController.new
result = c.render_to_string(partial: 'tweets/tweet', locals: {tweet: Tweet.first})
# =>
#   Tweet Load (0.8ms)  SELECT "tweets".* FROM "tweets" ORDER BY "tweets"."id" ASC LIMIT 1
#   Author Load (0.6ms)  SELECT "authors".* FROM "authors" WHERE "authors"."id" = $1 ORDER BY "authors"."id" ASC LIMIT 1  [["id", 1]]
#   Status Load (0.6ms)  SELECT "statuses".* FROM "statuses" WHERE "statuses"."twitter_id" = 367523226848866304 LIMIT 1
#   Rendered tweets/_tweet_body.html.slim (17.5ms)
#   Rendered tweets/_resolved_tweet.html.slim (23.7ms)
#   Rendered tweets/_tweet.html.slim (28.1ms)
# ActionView::Template::Error: undefined method `tweet_path' for #<#<Class:0x007fb21bf797a0>:0x007fb21cb009e8>
# from /Users/thomasklemm/.rbenv/versions/2.0.0-p195/lib/ruby/gems/2.0.0/gems/actionpack-4.0.0/lib/action_dispatch/routing/polymorphic_routes.rb:129:in `polymorphic_url'

Irgendwelche Ideen? Vielen Dank im Voraus!

Update: Die tweet_path oben erwähnt, ist in der Tat nicht definiert. Dieser Fehler resultiert aus der Verknüpfung auf einen Pfad = link_to 'Tweet', [@project, tweet] (slim-Vorlagen) über eine Instanz-variable, die vorhanden wäre, in Aussicht auf Erben von einem bestimmten controller, aber nicht beim Rendern außerhalb von diesem Kontext. Ich löste dies werde durch den entsprechenden Verein statt = link_to 'Tweet', [tweet.project, tweet].

InformationsquelleAutor Thomas Klemm | 2013-08-15
Schreibe einen Kommentar