Tôi đã đọc rất nhiều về cách render các partials Rails và các khung nhìn trong các nhiệm vụ/công việc/mô hình rake. Phần lớn những thứ tôi đã tìm thấy trên Stackoverflow và web mô tả các cách tiếp cận làm việc trong Rails 3, nhưng chúng dường như đã lỗi thời và tôi không làm cho chúng hoạt động (thậm chí với một số thời gian thử nghiệm).Hiển thị partials/view trong một công việc/công việc trên nền/rake trong Rails 4
Vì vậy, làm thế nào tôi có thể hiển thị một phần trong công việc nền trong Rails 4?
Đây là cách tiếp cận tốt nhất mà tôi đã làm việc cho đến nay (được trình bày trong bảng điều khiển).
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'
Bất kỳ ý tưởng nào? Cảm ơn trước!
Cập nhật: Số tweet_path
được đề cập ở trên thực sự không được xác định. Lỗi này phát sinh từ việc liên kết tới đường dẫn = link_to 'Tweet', [@project, tweet]
(mẫu mỏng) bằng cách sử dụng một biến mẫu sẽ có mặt trong các lượt xem kế thừa từ một bộ điều khiển nhất định, nhưng không xuất hiện khi được hiển thị bên ngoài ngữ cảnh này. Tôi đã giải quyết vấn đề này thông qua hiệp hội thích hợp thay vì = link_to 'Tweet', [tweet.project, tweet]
.
" Giải pháp dễ dàng hơn "hoạt động nhưng không cung cấp quyền truy cập vào các chức năng như" link_to "thường được sử dụng trong mẫu. Không có giải pháp nào dường như cung cấp quyền truy cập cho người trợ giúp ứng dụng cụ thể. –
@JeremyBurton Bạn có thể cung cấp cho ['render_anywhere'] (https://github.com/yappbox/render_anywhere) một thử và xem liệu người trợ giúp có thể được đưa vào đó không. –
Tôi thực sự giải quyết vấn đề bằng cách đơn giản bao gồm các mô-đun trợ giúp tôi cần trong lớp ViewRenderer. Cảm ơn. –