Brak hosta do linkowania! Proszę podać: parametr host lub ustawić domyślne opcje url [: host]
[3]}googluję od około 90 minut i nadal nie mam na to odpowiedzi. Gdzie ustawić default_url_options
? Ustawiłem go już na config.action_mailer.default_url_options
, aby rozwiązać ten sam błąd gdzie indziej, ale teraz dostaję ten błąd, gdy próbuję użyć pomocnika URL wewnątrz specyfikacji RSpec. Nie mam pojęcia, gdzie oczekuje ustawienia default_url_options.
Failure/Error: listing_url(listing).should match(/\/\d+-\w+$/)
RuntimeError:
Missing host to link to! Please provide :host parameter or set default_url_options[:host]
# ./spec/routing/listing_routing_spec.rb:9:in `block (3 levels) in <top (required)>'
Ten kod nie ma nic wspólnego z emailami/ActionMailer, po prostu potrzebuje adresu URL zamiast ścieżki.
Jakieś pomysły?10 answers
Musisz dodać następujący wiersz w każdym środowisku:
config.action_mailer.default_url_options = { :host => "yourhost" }
Rozwój.rb
config.action_mailer.default_url_options = { :host => "dev.yourhost.com" }
Test.rb
config.action_mailer.default_url_options = { :host => "test.yourhost.com" }
Produkcja.rb
config.action_mailer.default_url_options = { :host => "www.yourhost.com" }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-23 16:21:54
Your::Application.routes.draw do
default_url_options :host => "example.com"
# ... snip ...
end
Gdzieś w routes.rb
:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-31 14:31:30
Host powinien być określony w pliku konfiguracyjnym każdego środowiska. Eg:
config/environments/development.rb
Zobacz to pytanie i to pytanie .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-31 14:31:10
Gdy użyjesz dowolnej metody listing_url
, zostanie zwrócony pełny adres URL(nie względny jak zwykle). Dlatego rails pyta Cię o hosta, aby obliczyć cały adres URL.
Jak odróżnić rails ' a od gospodarza? Można to zrobić na kilka sposobów:
1.Dodanie tej opcji do każdego środowiska:
[/config/development.rb]
config.action_mailer.default_url_options = { host: "localhost:3000" }
[/config/test.rb]
config.action_mailer.default_url_options = { host: "localhost:3000" }
[/config/production.rb]
config.action_mailer.default_url_options = { host: "www.example.com" }
Uwaga: jeśli pracujesz wewnątrz rails engine pamiętaj, aby zrobić to samo dla swojej atrapy aplikacji wewnątrz testów silnika: path_to_your_engine/test/dummy/config/environments/*
ponieważ podczas testowania silnik to z czym rails testuje.
2.Dodaj opcję host do metody foo_url w następujący sposób:
listing_url(listing, host: request.host) # => 'http://localhost:3000/listings/1'
3.Nie wypisuje hosta z opcją :only_path to true
.
listing_url(listing, only_path: true ) # => '/listings/1'
IMHO nie widzę w tym sensu, bo w tym przypadku użyłbym metody listing_path
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-21 08:43:59
Zabawne, to ustawienie mi nie pomaga. Ponadto, mieszanie się z ustawieniami niezależnymi od środowiska w miejscach, w których czułem, że nie należy do nich, nie było dla mnie satysfakcjonujące. Dodatkowo potrzebowałem rozwiązania, które zadziałało podczas generowania adresów URL w robotnikach sidekiq/resque.
Moje dotychczasowe podejście, które idzie w config/environments/{development, production}.rb
:
MyApp::Application.configure do
# Stuff omitted...
config.action_mailer.default_url_options = {
# Set things here as usual
}
end
MyApp::Application.default_url_options = MyApp::Application.config.action_mailer.default_url_options
To mi działa w rails > = 3.2.x.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-10 20:04:19
Ustaw default_url_options
, Aby używać swojego action_mailer.default_url_options
.
W każdym z plików środowiska (np. development.rb
, production.rb
, itd.) możesz określić default_url_options
do użycia dla action_mailer
:
config.action_mailer.default_url_options = { host: 'lvh.me', port: '3000' }
Jednak nie są one ustawione dla MyApp:Application.default_url_options
:
$ MyApp::Application.config.action_mailer.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
$ MyApp::Application.default_url_options
#=> {}
Dlatego dostajesz ten błąd we wszystkim poza ActionMailer
.
Możesz ustawić default_url_options
swoją aplikację tak, aby używała tego, co zdefiniowałeś dla action_mailer
w odpowiednim pliku środowiskowym (development.rb
, production.rb
, itd.).
Aby rzeczy były jak najbardziej suche, zrób to w pliku config/environment.rb
, więc musisz to zrobić tylko raz:
# Initialize the rails application
MyApp::Application.initialize!
# Set the default host and port to be the same as Action Mailer.
MyApp::Application.default_url_options = MyApp::Application.config.action_mailer.default_url_options
Teraz po uruchomieniu aplikacji, cała aplikacja default_url_options
będzie pasować do twojej action_mailer.default_url_options
:
$ MyApp::Application.config.action_mailer.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
$ MyApp::Application.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
Hat tip to @pduersteler za poprowadzenie mnie tą ścieżką.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-30 20:03:46
Zawsze możesz przekazać host jako parametr do helpera URL:
listing_url(listing, host: request.host)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-13 20:54:16
Możesz ustawić domyślne opcje url w kontrolerze aplikacji:
class ApplicationController < ActionController::Base
def default_url_options
{:locale => I18n.locale}
end
end
Http://guides.rubyonrails.org/action_controller_overview.html#default_url_options
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-19 15:55:41
Miałem ten sam błąd. Miałem wszystko napisane poprawnie, w tym Listing 10.13 z samouczka.
Rails.application.configure do
.
.
.
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delevery_method :test
host = 'example.com'
config.action_mailer.default_url_options = { host: host }
.
.
.
end
Oczywiście z "example.com" zastąpiony adresem URL serwera.
To co przeczytałem w tutorialu to ta linijka:
Po ponownym uruchomieniu serwera programistycznego w celu aktywacji konfiguracji...
Więc odpowiedzią dla mnie było wyłączenie serwera i ponowne włączenie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-25 15:41:59
Dodanie default_url w trasach nie jest właściwym rozwiązaniem, chociaż w niektórych przypadkach działa.
Musisz ustawić default_url w każdym środowisku (rozwój, test, produkcja).
Musisz wprowadzić te zmiany. config/environments/development.rb
config.action_mailer.default_url_options =
{ :host => 'your-host-name' } #if it is local then 'localhost:3000'
config/environments/test.rb
config.action_mailer.default_url_options =
{ :host => 'your-host-name' } #if it is local then 'localhost:3000'
config/environments/development.rb
config.action_mailer.default_url_options =
{ :host => 'your-host-name' } #if it is local then 'localhost:3000'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-04 11:58:20