我已经完成了标题中描述的错误的众多解决方案。
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
因此,此错误的传统答案(例如在我的环境设置中设置变量)似乎不是解决方案。
以下是其他一些提示:
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'
答案 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>