Ruby on rails 如何在Rails帮助文件中加载和使用根url?

Ruby on rails 如何在Rails帮助文件中加载和使用根url?,ruby-on-rails,ruby,ruby-on-rails-4,helper,Ruby On Rails,Ruby,Ruby On Rails 4,Helper,在我的Rails应用程序\u helper.rb文件中,我有一个需要使用root\u url的函数: def get_post_link(post) host = root_url post_link = host + 'posts/' + post.id.to_s return post_link end 但是,当我使用这个函数时,我现在会得到如下错误: NoMethodError: undefined method `posts_path' for #<M

在我的Rails应用程序\u helper.rb文件中,我有一个需要使用root\u url的函数:

def get_post_link(post)
    host = root_url
    post_link = host + 'posts/' + post.id.to_s

    return post_link
end 
但是,当我使用这个函数时,我现在会得到如下错误:

NoMethodError: undefined method `posts_path' for #<Module:0x007fa8978e54a8>
但当我包括这一行时,另一个错误出现了,那就是:

ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
我知道我可以简单地将:host参数提供给root\u url来解决这样的问题:
root\u url(:host=>“localhost:3000”)
,但这恰恰违背了我首先要使用root\u url的目的。这是因为我现在只是对根url进行硬编码,代码无法智能地知道我想要的是生产服务器url还是本地主机url,就像最初设想的那样

那么,还有其他的方法吗?这样我就可以在我的应用程序\u助手中正确使用
root\u url


谢谢

请截图显示您的错误。您可以在环境文件中定义以下内容:在config/development.rb
Rails.application.routes.default\u url\u options[:host]=“localhost:3000”
中,然后在config/production.rb:
Rails.application.routes.default\u url\u options[:host]=“your\u domain.com”
中,
get\u post\u link(post)
方法可能是一种已经存在的Rails方法(通过Route helpers生成)。此方法可以替换为
post\u url(post)
您可能还想尝试的两件事是将
包括Rails.application.routes.url\u helpers
添加到helper的顶部,在我看来,这似乎有点不妥。我想知道它是否能找到根路径。尽管我同意@MrYoshiji的观点,正确的方法是说
post\uurl(path)
谢谢大家。现在我遇到了这个错误:
无法处理传递给url\u的参数。请要求路由或提供您自己的实现
ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true