EasyMarklet Rails gem:未定义的方法`[]'为nil:NilClass

时间:2014-05-28 00:19:58

标签: javascript ruby-on-rails bookmarklet

我试图在我的rails应用中添加一个裸骨标记。我按照repository上的说明操作,然后按照示例获取裸骨标记here。这是我的标记的js(从示例中直接拉出):

(function(){

  var protocol = 'http://'
  var host = '<%= Rails.application.config.action_controller.default_url_options[:host] %>';
  var port = '<%= Rails.application.config.action_controller.default_url_options[:port] %>';
  port = port === '' ? '' : ':' + port;
  var full_host = protocol + host + port;
  document.location = full_host + "/pages/new?url=" + encodeURIComponent(document.location)

})();

我在视图中的链接:

<%= link_to 'Bookmarklet', easymarklet_js('my_sample_bookmarklet.js.erb') %>

我现在收到此错误:

undefined method `[]' for nil:NilClass
  (in /Users/myname/Rails/sample/app/assets/javascripts/my_sample_bookmarklet.js.erb)

那来自我的JS的第二或第三行吧?我该如何解决?我的javascript技能不是很好,所以任何帮助都表示赞赏。提前谢谢!

1 个答案:

答案 0 :(得分:1)

听起来Rails.application.config.action_controller.default_url_options可能是nil。你可以通过检查控制台来确认吗?如果是这样,您只需要在环境文件中设置它。开发中的标准默认值是:

MyApp::Application.configure do
  # development.rb
  config.action_controller.default_url_options = { host: 'localhost', port: 3000 }
end