子域名+ ActionView :: Template ::错误(缺少要链接的主机!)

时间:2012-10-18 17:23:12

标签: ruby-on-rails ruby

我已经完成了标题中描述的错误的众多解决方案。

ActionView::Template::Error (Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true):

但是,该项目还修改了url_for函数以使用子域,如此railscast中所示:

http://railscasts.com/episodes/221-subdomains-in-rails-3

因此,此错误的传统答案(例如在我的环境设置中设置变量)似乎不是解决方案。

以下是其他一些提示:

  • 这是一个全新的设置,我刚刚克隆了一个项目,并安装了红宝石,铁轨,宝石等。
  • 我尝试了“rvm implode”并多次重启
  • 团队的其他成员通常在Mac上进行本地开发,而我正在远程开发Ubuntu计算机。
  • 我是以root身份工作(这有关系吗?)

1889年完成500内部服务器错误

ActionView :: Template :: Error(缺少要链接的主机!请提供:host参数,设置default_url_options [:host],或将:only_path设置为true):     1:%header.menu {:role => “旗帜”}     2:.col980     3:%h1     4:%a.logo {:href => root_url({:subdomain => false})}     5:-if current_user.premium?     6:%img {:alt => “恭恭敬敬”,:src => “/images/logo_beta_premium.png"}/     7: -   app / helpers / url_helper.rb:16:in url_for' app/views/shared/_logged_in_writer_nav.html.haml:4:in _ app_views_shared__logged_in_writer_nav_html_haml__656388632_107925510'   app / views / layouts / application.html.haml:35:in block in _app_views_layouts_application_html_haml__193634629_107212530' app/helpers/application_helper.rb:15:in html5_haml_tag'   app / views / layouts / application.html.haml:2:in _app_views_layouts_application_html_haml__193634629_107212530' app/controllers/application_controller.rb:18:in error_generic'

1 个答案:

答案 0 :(得分:6)

问题是您正在使用url帮助程序而不提供用于应用程序的默认主机。 *_url的神奇之处在于它会在链接中返回路径以及基本网址

例如,如果您的默认网址是example.com:

> link_to "All Blogs", root_url(:subdomain => false)
#=> <a href="http://example.com/">All Blogs</a>

您可以在config/environments/*.rb文件中设置默认主机,方法是将以下行添加到您所在的环境配置文件的底部。

config.before_initialize do                                                                                                                                                                                                       
  MyApp::Application.routes.default_url_options[:host] = 'myapp.com'
end

修改

您可以使用*_path

完全避免此问题
> link_to "All Blogs", root_path
#=> <a href="/">All Blogs</a>