問題なくレンダリングする前に、いくつかのコントローラー ロジックを実行する必要があるパーシャルがあります。パーシャルを、レンダリングされるたびに実行されるコントローラー ロジックに関連付ける方法はありますか?
たとえば、これは私の現在のコードがどのように見えるかです:
MyDataController:
class MyDataController < ApplicationController
def view
@obj = MyData.find(params[:id])
run_logic_for_partial
end
def some_method_i_dont_know_about
@obj = MyData.find(params[:id])
# Doesn't call run_logic_for_partial
end
def run_logic_for_partial
@important_hash = {}
for item in @obj.internal_array
@important_hash[item] = "Important value"
end
end
end
view.html.erb:
Name: <%= @obj.name %>
Date: <%= @obj.date %>
<%= render :partial => "my_partial" %>
some_method_i_dont_know_about.html.erb:
Name: <%= @obj.name %>
User: <%= @obj.user %>
<%# This will fail because @important_hash isn't initialized %>
<%= render :partial => "my_partial" %>
_my_partial.html.erb:
<% for item in @obj.internal_array %>
<%= item.to_s %>: <%= @important_hash[item] %>
<% end %>
メソッドがコントローラーから明示的に呼び出されていなくても、レンダリングさrun_logic_for_partial
れるたびにそれが呼び出されるようにするにはどうすればよいですか? _my_partial.html.erb
できない場合、この種の状況に対処するために Rails で使用される一般的なパターンはありますか?