11

次のような名前付きルートがいくつかありますrake routes

birthdays GET    /birthdays(.:format)                             birthdays#index

rakefile では、自分の意見のように呼び出すことができるようにしたいだけですbirthdays_url

task :import_birthdays => :environment do
  url = birthdays_url
end

しかし、私はエラーが発生していますundefined local variable or method 'birthdays_url' for main:Object

4

3 に答える 3

22

次のサンプル コードを rake タスクで使用できます。

include Rails.application.routes.url_helpers
puts birthdays_url(:host => 'example.com')

または、rake タスクで次のサンプル コードを使用できます。

puts Rails.application.routes.url_helpers.birthdays_url(:host => 'example.com')

URL のパス部分のみが必要な場合は、(:only_path => true)代わりに(:host => 'example.com'). したがって、それは/birthdays代わりにhttp://example.com/birthdays.

rake タスクはそのビットの情報を認識せず、それがないとこのエラーが発生するため、(:host => 'example.com')またはピースのいずれかが必要です。(:only_path => true)

Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
于 2013-07-23T00:55:28.687 に答える
3

これを使って:

Rails.application.routes.url_helpers.birthdays_url

または冗長にする:

include Rails.application.routes.url_helpers
url = birthdays_url
于 2013-07-23T00:48:45.990 に答える