response_with перенаправляет в указанное место даже при ошибках валидации в rails3 - PullRequest
1 голос
/ 19 ноября 2011

При использовании местоположения в ответе он игнорирует ошибки проверки и перенаправляет в указанное местоположение.Это ожидаемое поведение?

Я проверил в модуле респондента , что он проверяет наличие ошибок в модели.Я проверил модель, и она содержит ошибки проверки в объекте @solution.Что мне здесь не хватает?

контроллер:

def create
  @problem = Problem.find(params[:problem_id])
  @solution = @problem.solutions.build params[:solution]
  @solution.save
  respond_with(@solution, :location => detail_problem_solution_path(@problem, @solution)
end

модель:

  validates :body, :presence => true, :unless => :reference

ссылка верна или ложна.

Ответы [ 2 ]

1 голос
/ 16 июля 2012

Я столкнулся с этой проблемой сегодня и натолкнулся на эту проблему с Rails на github .Кажется, исключение выдается, поскольку помощник по URL-адресу маршрута не может сгенерировать допустимые для несохраненных (недействительных) записей.

Существует обсуждение вопроса о разрешении использования github в качестве аргумента параметра location, но это не так.Не похоже, что он будет добавлен в ближайшее время.

Пока я буду придерживаться следующего решения:

def create
  @post = Post.new(params[:post])
  if @post.save
    respond_with(@post, location: edit_post_path(@post))
  else
    respond_with @post
  end
end
0 голосов
/ 22 ноября 2011

Единственный способ, который мне удалось решить, это:

  def create
    @problem = Problem.find(params[:problem_id])
    @solution = @problem.solutions.build solution_params
    success = @solution.save
    respond_with(@solution) do |format|
      format.html {redirect_to detail_problem_solution_path(@problem, @solution) } if success
    end
  end
...