2010-06-07 142 views
0

我正在爲Rails應用程序上的jruby創建一個新的插件,這個插件最終會變成一個gem。在我的插件裏面有控制器,助手和視圖。對於我的看法,我想用Haml。問題是,我似乎無法認識到他們是haml模板。這甚至有可能嗎?有沒有辦法讓插件將Haml作爲其視圖的依賴項?我的意思是,我打算爲我創建的插件創建插件創建的視圖,供應用程序開發人員使用。如何在我的新插件的視圖中使用Haml?

例如:

vendor/ 
    plugins/  
    my_plugin/ 
     lib/ 
     app/ 
      views/ 
      my_plugin_demo/ 
       index.haml.html 
      controllers/ 
      my_plugin_demo_controller.rb 
      helpers/ 

在我的插件的init.rb,我想:

require 'my_plugin' 
require 'haml' #doesn't seem to make a difference :(

但似乎沒有任何區別。有沒有人有過這方面的經驗?我似乎無法找到任何有關如何使這項工作的文件。插件視圖是否僅限於.erb模板?

更新:@Jens Fahnenbruck

我是還是有點糊塗......你建議我把下面的進my_plugin的init.rb文件?

# Load Haml and Sass. 
# Haml may be undefined if we're running gems:install. 
Haml.init_rails(binding) if defined?(Haml) 

require 'my_plugin' 

我試過這樣做,它沒有奏效。它仍然給我下面的頁面錯誤:

Missing template my_plugin_demo/index.erb in view path app/views 

不知道我理解你推薦什麼...

+0

嘗試'Haml.init_rails(綁定) '如果沒有定義?(Haml)'看看Haml是否正確裝載 – jigfox 2010-06-07 12:19:28

回答

1

這是我的haml --rails /path/to/app創建vendor/plugins/haml/init.rb文件(見http://wiki.rubyonrails.org/howtos/templates/haml

begin 
    require File.join(File.dirname(__FILE__), 'lib', 'haml') # From here 
rescue LoadError 
    begin 
    require 'haml' # From gem 
    rescue LoadError => e 
    # gems:install may be run to install Haml with the skeleton plugin 
    # but not the gem itself installed. 
    # Don't die if this is the case. 
    raise e unless defined?(Rake) && 
     (Rake.application.top_level_tasks.include?('gems') || 
     Rake.application.top_level_tasks.include?('gems:install')) 
    end 
end 

# Load Haml and Sass. 
# Haml may be undefined if we're running gems:install. 
Haml.init_rails(binding) if defined?(Haml) 

我相信最後一行是插件需要的工作

UPDAT Ë

你init.rb文件應該是這樣的:

require 'haml' 
Haml.init_rails(binding) 
require 'my_plugin' 

更新2

嘗試另一個文件夾結構:

vendor/ 
    plugins/  
    my_plugin/ 
     lib/ 
     app/ <-- one level up 
     views/ 
      my_plugin_demo/ 
      index.haml.html 
     controllers/ 
      my_plugin_demo_controller.rb 
     helpers/ 
+0

Fahnenbruck 感謝您的迴應,但我不確定它的工作原理。我已根據您的建議更新了原始問題的詳細信息... – Eric 2010-06-07 12:06:13

+0

Fahnenbruck ...我嘗試了您的更新,但仍收到以下消息: 「Missing template my_plugin_demo/index.erb in view path app/views 「。對於我的生活,我無法弄清楚我做錯了什麼。 :( – Eric 2010-06-07 12:33:59

+0

Fahnenbruck:這似乎是我可以看到顯示的唯一方法是當我將一個index.html.erb或index.html.haml放入Rails.root/app/views/...任何時候我嘗試將這些索引文件中的任意一個放入Rails.root/vendor/plugins/my_plugin/lib/app/views/my_plugin_demo /它吐出:Missing template my_plugin_demo/index。erb在視圖路徑應用程序/視圖 – Eric 2010-06-07 12:40:37

相關問題