Представления Rails: пропущенный шаблон после рендеринга, вызванного после неудачной проверки с вложенными ресурсами - PullRequest
0 голосов
/ 01 декабря 2010

Я пытаюсь работать с неудачными проверками в Rails 3.

У меня есть ресурс глав с вложенными комментариями. Всего только один вид; представление show из chapters_controller, которое содержит форму для публикации нового комментария и указывает на действие создания comments_controller следующим образом (код контроллера включен):

http://pastie.org/1338126

когда он не проходит проверку, он неверно направляет к: '/ chapters / 1 / comments' и отображает на странице следующее:

Template is missing

Missing template http://localhost:3000/chapters/1 with {:locale=>[:en, :en], :formats=>[:html], :handlers=>[:rhtml, :rxml, :builder, :erb, :rjs]} in view paths "/app/views", "", "/"

ура

Пол

Ответы [ 3 ]

1 голос
/ 19 апреля 2012

Для тех, кто в будущем, у меня просто была похожая проблема.

Я пытался выполнить рендеринг при сбое проверки для действия создания адреса:

render new_user_address_path(@user)
#Normally this should work with a redirect_to or a link_to but render doesn't work this way

Вместо этого вы должны:1006 *

render 'new'

Как уже упоминалось @ideaasylum, вы не можете визуализировать"именованного помощника", но вы можете визуализировать действие.Для меня это похоже на идиосинкразию с рельсами.Технически именованный путь и действие должны идти в одно и то же место.

0 голосов
/ 10 июня 2012

После перенаправления вы должны немедленно вернуться, так как redirect_to не возвращается.

 if @comment.save
      redirect_to chapter_url(params[:chapter_id]) and return
    else
      render chapter_url(params[:chapter_id]) and return
    end
0 голосов
/ 02 декабря 2010

Я думаю, что проблема с вызовом рендеринга:

if @comment.save
  redirect_to chapter_url(params[:chapter_id])
else
  render chapter_url(params[:chapter_id])
end

Я не думаю, что правильно передавать URL для рендеринга (см. API здесь: http://apidock.com/rails/ActionController/Base/render). Обычно вы звоните

render :action => new

, который будет отображать новый вид текущего контроллера.Так как вы хотите отобразить представление 'show' главы (т. Е. Представление другого контроллера), я думаю, что вызов должен быть больше похож на:

render :template => 'chapters/show'

Мои знания по Rails становятся немного ржавыми, и с Rails 3 все может измениться. Надеюсь, это поможет в любом случае ...

...