У меня есть странное NoMethodError, которое появляется, когда форма не проходит проверку в Rails. Я могу получить доступ к «новому» методу без проблем, чтобы заполнить форму в первый раз. Но тогда форма подчиняется вложенному контроллеру, и если проверка не выполняется, она пыталась снова перенаправить на «новый» (как следует), но бросает undefined method articles_path
.Нечетный NoMethodError при завершении проверки
Я думал, что это может быть связано с гнездом, но я считаю, что настройка здесь правильная для загрузки вложенного «нового» пути?
Уверен, что мне не хватает чего-то очевидного ... Но почему это происходит?
Контроллер:
def new
@user = User.find(current_user)
@article = Article.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @article }
end
end
def create
@article = current_user.articles.build(params[:article])
respond_to do |format|
if @article.save
format.html { redirect_to root_path, :flash => { :notice =>
"Article added!" } }
else
format.html { render :action => "new" }
format.xml { render :xml => @article.errors, :status =>
:unprocessable_entity }
end
end
end
Форма:
= form_for([@user, @article], :html => { :multipart => true }) do |f|
- if @article.errors.any?
#errorExplanation
%h2
= pluralize(@article.errors.count, "error")
prohibited this post from being saved:
%ul
- @article.errors.full_messages.each do |msg|
%li= msg
.clearfix
= f.label :title, "Article title *"
.input
= f.text_field :title
Попробуйте настроить @user в вашем методе создания, так как вам нужна его новая форма. –