include Rails.application.routes.url_helpers вызывает ArgumentError Ссылка на отсутствующий хост - PullRequest
7 голосов
/ 03 ноября 2011

Я занимаюсь разработкой Rails 3.1.1.Включение url_helpers в Model приводит к возникновению ArgumentError при сохранении модели.

class Medium < ActiveRecord::Base
  include Rails.application.routes.url_helpers

  .
  .
end

class MediaController < ApplicationController

  def create
    @medium = Medium.new(params[:medium])
    @media.save # => cause ArgumentError
  end
end

ArgumentError (Отсутствует узел для ссылки на! Пожалуйста, укажите параметр: host, установите для default_url_options [: host] или установите: only_path значениеtrue):

Другая модель, которая также включает url_helper, не вызывает ошибку.В чем дело?Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 12 сентября 2013

Вам нужно передать хост в качестве аргумента в вызове, где вы используете помощника:

Rails.application.routes.url_helpers.media_url(:host => "localhost:3000")

или другой маршрут, подобный этому:

Rails.application.routes.url_helpers.media_url(self, :host => AppConfig.host)

, где AppConfig.host - хост в зависимости от environemnt (localhost: 300 для env разработки).

0 голосов
/ 03 ноября 2011

Эта ошибка обычно возникает, когда мы пытаемся использовать какие-либо помощники по URL в тех местах, где они не должны использоваться.Например, если я пытаюсь сгенерировать URL-адрес записи пароля из действия класса mailer, используя reset_password_url(@user), я получаю ту же ошибку.

Пожалуйста, убедитесь, что вы не используете методы _path или _url в своем классе модели.Более того, я не думаю, что лучше всего использовать url_helpers внутри модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...