2017-01-22 3 views
2

В добавлении библиографической формы я создаю форму для добавления автора, которая добавляет автора с помощью json.response_to format.html слишком мало аргументов

Это прекрасно работает.

Однако, когда автор добавляется в базу данных, я хочу показать сообщение об успешном завершении.

Это мой код:

def create 
    @auteur = Auteur.new(params_auteur) 
    respond_to do |q| 
     if @auteur.save 
      format.html{ redirect_to @auteur, notice: 'Auteur added successfully.'} 
      format.js{} 
      format.json{ 
       render json: @auteur, status: :created, location: @auteur 
      } 
     else 
      format.html{ render action: "new"} 
      format.json{ render json: @auteur.errors, status: :unprocessable_entity} 
     end 
    end 
end 

Затем я добавил файл views/auteurs/create.js.erb, который содержит этот код:

$("<%= escape_javascript(render @auteur) %>").appendTo(".bloque_ajoute_auteur"); 

Сообщение об ошибке я получаю генерируется сразу после (успешной) вставки новый автор в базе данных:

Completed 500 Internal Server Error in 10ms (ActiveRecord: 1.6ms) 
ArgumentError (too few arguments): 
app/controllers/administration/auteurs_controller.rb:23:in `format' 
app/controllers/administration/auteurs_controller.rb:23:in `block in create' 
app/controllers/administration/auteurs_controller.rb:21:in `create' 

Линия 21 - начало o f блок response_to; линия 23 является format.html{ redirect_to @auteur, notice: 'Auteur ajouté.'}

Я думал, что довольно внимательно следил за этим: http://guides.rubyonrails.org/working_with_javascript_in_rails.html#server-side-concerns

ответ

0

Ваш код заканчивается вызовом format instance method ядра, вместо использования аргумента, переданного блоку respond_to, что и должно произойти.

Этот метод ожидает больше аргументов, которые, очевидно, не предоставляются в этом случае.

Для решения проблемы измените имя аргумента с q на format.

3

Это должно быть respond_to do |format|. Как только он достигнет первого экземпляра format без его объявления, он потерпит неудачу.

+0

Это правильно! Глупая ошибка. Тем не менее, никакое сообщение вообще не отправляется обратно этой функцией (ничего в журнале сервера и в средствах разработки Firefox). – thiebo

Смежные вопросы