Rails 2.3.14 .js.erb文件没有路由

时间:2015-01-19 11:51:01

标签: ruby-on-rails ruby ruby-on-rails-2

在我的布局页脚中,我包含特定于页面的JavaScript文件,如下所示:

<%= javascript_include_tag "#{params[:controller]}_#{params[:action]}" if javascript_exists?("#{params[:controller]}_#{params[:action]}") %>

我使用的帮助程序来自本网站上的另一个问题,但已修改为使用Rails 2:

application_helper.rb

def javascript_exists?(script)
  script = "#{RAILS_ROOT}/public/javascripts/#{script}.js"
  extensions = %w(.coffee .erb .coffee.erb) + [""]
  extensions.inject(false) do |truth, extension|
    truth || File.exists?("#{script}#{extension}")
  end
end

然后我还init包含的文件:

<script>
    jQuery(document).ready(function() {
        <%= "#{params[:controller].titleize}#{params[:action].titleize}.init();" if javascript_exists?("#{params[:controller]}_#{params[:action]}") %>
    });
</script>

如果我的文件名为controller_action.js,但是一旦重命名为controller_action.js.erb,Rails就会生成错误,因为它无法找到它。

GET http://localhost:3000/javascripts/controller_action.js 404 (Not Found)
Uncaught ReferenceError: ControllerAction is not defined

更新

如果我使用.rjs扩展名,那么就不会产生错误,但这似乎是因为Rails并不认为该文件存在。 (我使用javascript_exists?扩展名更新了.rjs。)

经过一些调试后,找到 文件:

/path/public/javascripts/circuit_list.js true

但如果使用false,则返回.rjs

在浏览器中导航到http://localhost:3000/javascripts/controller_action.js时出现路由错误:

No route matches "/javascripts/controller_action.js" with {:method=>:get}

0 个答案:

没有答案