try*_*000 58 ruby-on-rails actioncontroller ruby-on-rails-3
现在我正在使用它适用于开发主机,但是当我转向生产时,我必须手动更改{:host =>""}代码.
def share_all
url = Rails.application.routes.url_helpers.post_url(self, :host => 'localhost:3000')
if user.authentications.where(:provider => 'twitter').any?
user.twitter_share(url)
end
end
Run Code Online (Sandbox Code Playgroud)
我想使用它然后定义每个环境的default_url_options:
def share_all
url = Rails.application.routes.url_helpers.post_url(self)
if user.authentications.where(:provider => 'twitter').any?
user.twitter_share(url)
end
end
Run Code Online (Sandbox Code Playgroud)
我已经尝试将此添加到我的config/environments/development.rb但我仍然得到"缺少主机链接到!请提供:host参数或设置default_url_options [:host]"错误
config.action_controller.default_url_options = {:host => "localhost:3000"}
Run Code Online (Sandbox Code Playgroud)
我甚至用这种方式尝试过:
config.action_controller.default_url_options = {:host => "localhost", :port => "3000"}
Run Code Online (Sandbox Code Playgroud)
编辑:
我现在也遵循了这个并且仍然是相同的错误指南http://edgeguides.rubyonrails.org/action_controller_overview.html#default_url_options
class ApplicationController < ActionController::Base
protect_from_forgery
include ApplicationHelper
def default_url_options
if Rails.env.production?
{ :host => "example.com"}
else
{:host => "example1.com"}
end
end
end
Run Code Online (Sandbox Code Playgroud)
这让我发疯,我在这里失踪了什么?
try*_*000 113
好吧,我认为正确的写作方式是
Rails.application.routes.default_url_options[:host] = 'localhost:3000'
Run Code Online (Sandbox Code Playgroud)
:)
default_url_options
距离ActionMailer
.您希望尽可能保持DRY,因此,理想情况下,您不希望在同一环境的多个位置对主机和端口进行硬编码,除非您ActionMailer
实际使用的主机和端口与其他主机不同Application
.
要设置default_url_options
整个文件Application
,只需将以下行添加到您的config/environment.rb
文件中(更改MyApp
为您的应用程序名称):
# 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
Run Code Online (Sandbox Code Playgroud)
这将解决您的问题,并自动设置您Application
的default_url_options
到一样的config.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"}
Run Code Online (Sandbox Code Playgroud)
config/environments/development.rb (任何其他环境,相同)
添加此行与您想要的主机
routes.default_url_options[:host] = 'localhost:3000'
Run Code Online (Sandbox Code Playgroud)
小智 5
config.action_mailer.default_url_options = { :host => "你的主机" }
例如您的主机 localhost:3000
您可以将其放入 test.rb、development.rb、 Production.rb 文件中 主机可能因环境而异
归档时间: |
|
查看次数: |
51582 次 |
最近记录: |