Прошло много времени с тех пор, как этот вопрос был опубликован, но я потратил некоторое время на то, чтобы выяснить это, и не смог найти слишком много помощи по этому вопросу в Интернете, поэтому:
Решение - создать .js.erb файлы - один для успеха и один для отказа.
def create
@foo = Foo.new(params[:foo])
if @foo.save
respond_to do |format|
format.html { redirect_to root_path }
format.js { render :action => "success"} #rails now looks for success.js.erb
end
else
respond_to do |format|
format.html { render :action => 'new'}
format.js { render :action => "failure"} #rails now looks for failure.js.erb
end
end
end
end
Если кажется, что если вы не укажете имя файла, rails будет искать create.js.erb в обоих случаях (потому что format.js вызывается из create).Это не очень хорошо в случае успеха / ошибки, потому что вы хотите различное поведение для каждого сценария - поэтому переопределите имена файлов с помощью атрибута: action.