2012-10-18 29 views
6

Tôi đã làm việc thông qua nhiều giải pháp cho lỗi được mô tả trong tiêu đề.Tên miền phụ + ActionView :: Mẫu :: Lỗi (Thiếu máy chủ để liên kết đến!)

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

Tuy nhiên, dự án này cũng đã sửa đổi chức năng url_for tận dụng tên miền phụ, như đã thấy trong railscast này:

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

Vì vậy, câu trả lời truyền thống để lỗi này, chẳng hạn như thiết lập các biến trong môi trường cài đặt của tôi dường như không phải là giải pháp.

Dưới đây là một số gợi ý khác:

  • đây là một thương hiệu mới thành lập, tôi vừa nhân bản một dự án và ruby ​​cài đặt, đường ray, đá quý, vv
  • Tôi đã cố gắng "RVM nổ tung" và bắt đầu qua nhiều lần
  • phần còn lại của nhóm thường phát triển cục bộ trên máy Mac, trong khi tôi đang phát triển trên máy Ubuntu từ xa.
  • Tôi đang làm việc như là người chủ (không vấn đề này?)

Hoàn thành 500 Internal Server Error trong 1889ms

ActionView :: Template :: Lỗi (Thiếu máy chủ để liên kết đến Vui lòng cung cấp: thông số máy chủ, đặt default_url_options [: host] hoặc đặt: only_path thành true): 1:% header.menu {: role => "banner"} 2: .col980 3:% h1 4:% a. logo {: href => root_url ({: subdomain => false})} 5: -if current_user.premium? 6:% img {: alt => "an",: src => "/images/logo_beta_premium.png"}/ 7: -else app/giúp đỡ/url_helper.rb: 16: trong url_for' app/views/shared/_logged_in_writer_nav.html.haml:4:in _app_views_shared__logged_in_writer_nav_html_haml__656388632_107925510' ứng dụng /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: trong _app_views_layouts_application_html_haml__193634629_107212530' app/controllers/application_controller.rb:18:in error_generic'

Trả lời

6

vấn đề là bạn đang sử dụng một url trợ giúp mà không cung cấp máy chủ lưu trữ mặc định để sử dụng cho ứng dụng. Sự kỳ diệu của *_url là nó trả về đường dẫn cùng với url cơ sở trong liên kết.

Ví dụ, nếu máy chủ url mặc định của bạn là example.com:

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

Bạn có thể thiết lập các máy chủ mặc định trong config/environments/*.rb tập tin của bạn bằng cách thêm các dòng sau vào dưới cùng của tập tin cấu hình môi trường bạn' lại trong

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

Edit:.

Bạn hoàn toàn có thể tránh được vấn đề này bằng cách sử dụng *_path

> link_to "All Blogs", root_path 
#=> <a href="/">All Blogs</a> 
Các vấn đề liên quan