delayed_job
xmlを介してリモートデータベースを更新するために使用しようとしています
私のlibフォルダーに、で実行する必要のあるクラスを含むファイルを配置しましたrender_to_text
が、次のtemplate.xml.builder
ようになります。
undefined method `render_to_string' for #<SyncJob:0x7faf4e6c0480>...
私は何が間違っているのですか?
delayed_job
xmlを介してリモートデータベースを更新するために使用しようとしています
私のlibフォルダーに、で実行する必要のあるクラスを含むファイルを配置しましたrender_to_text
が、次のtemplate.xml.builder
ようになります。
undefined method `render_to_string' for #<SyncJob:0x7faf4e6c0480>...
私は何が間違っているのですか?
ac = ActionController::Base.new()
ac.render_to_string(:partial => '/path/to/your/template', :locals => {:varable => somevarable})
未定義のヘルパーメソッドで問題が発生した後、使用しましたApplicationController
ApplicationController.new.render_to_string
render_to_string
で定義されていActionController::Base
ます。クラス/モジュールはRailsコントローラーのスコープ外で定義されているため、この関数は使用できません。
ファイルを手動でレンダリングする必要があります。テンプレート(ERB、Hamlなど)に何を使用しているのかわかりません。ただし、テンプレートをロードして自分で解析する必要があります。
したがって、ERBの場合、次のようになります。
require 'erb'
x = 42
template = ERB.new <<-EOF
The value of x is: <%= x %>
EOF
puts template.result(binding)
テンプレートファイルを開いて内容をに送信する必要がありますERB.new
が、その演習はあなたに任されています。これがERBのドキュメントです。
それが一般的な考え方です。
render_to_string
その他は、コントローラーのクラスメソッドとして使用できるようになりました。したがって、好きなコントローラーで次のことを行うことができます。ApplicationController.render_to_string
特に、オブジェクトのクラスに基づいてテンプレートに動的インスタンス変数を割り当てる必要があったため、例は次のようになりました。
ApplicationController.render_to_string(
assigns: { :"#{lowercase_class}" => document_object },
inline: '' # or whatever templates you want to use
)
RailsをPRした開発者による素晴らしいブログ投稿:https ://evilmartians.com/chronicles/new-feature-in-rails-5-render-views-outside-of-actions
あなたはあなたtemplate.xml.builder
を部分的な( )に変えて、それをインスタンス化して呼び出す_template.xml.builder
ことによってそれをレンダリングすることができますActionView::Base
render
av = ActionView::Base.new(Rails::Configuration.new.view_path)
av.extend ApplicationController.master_helper_module
xml = av.render :partial => 'something/template'
まだxmlで試していませんが、htmlパーシャルでうまく機能します。