我有一個簡單的模板系統,它在呈現模板時調用在模型的不同類中定義的show_me
方法(有點小工具)。這些小部件最初將字符串作爲html返回。所以在我的erb中我有這樣的想法。從模型中訪問ActionView幫助程序
<% @template.widgets.each do |widget| %>
<%= widget.show_me %>
<% end %>
由於部件的看法變得更加複雜,我開始用諧音來呈現他們,稱ActionView::Base
從我的小工具裏面渲染方法(請不要扔了嗎:)
def show_me
# ... specific calculations and other magic.
ActionView::Base.new(MyApp::Application.config.view_path).render(:partial => "widgets/weather_widget", :locals => {:data => data, :settings => settings})
end
所以,這就像一個魅力(真的......),但是當我想在小部件特定部分(例如widgets/_weater_widget.html.erb
)中使用助手時,它們不起作用。例如。 javascript_tag
增加
can't convert nil into String
actionpack (3.0.0) lib/action_view/helpers/asset_tag_helper.rb:790:in `join'
actionpack (3.0.0) lib/action_view/helpers/asset_tag_helper.rb:790:in `rails_asset_id'
actionpack (3.0.0) lib/action_view/helpers/asset_tag_helper.rb:813:in `rewrite_asset_path'
actionpack (3.0.0) lib/action_view/helpers/asset_tag_helper.rb:742:in `compute_public_path'
actionpack (3.0.0) lib/action_view/helpers/asset_tag_helper.rb:256:in `javascript_path'
actionpack (3.0.0) lib/action_view/helpers/asset_tag_helper.rb:822:in `javascript_src_tag'
actionpack (3.0.0) lib/action_view/helpers/asset_tag_helper.rb:362:in `block in javascript_include_tag'
actionpack (3.0.0) lib/action_view/helpers/asset_tag_helper.rb:362:in `collect'
actionpack (3.0.0) lib/action_view/helpers/asset_tag_helper.rb:362:in `javascript_include_tag'
我想我在創建ActionView :: Base時丟失了一些東西。
任何想法如何解決這個問題?也歡迎任何關於整體設計的建議:)