Я работаю над простым окном сообщения, использую «remote: true», а затем заменяю div flash_message сообщением об успехе или неудаче. По какой-то причине это продолжает выдавать ошибку «JSON.parse: неожиданный символ в строке 1 столбца 1 данных JSON».
Мой взгляд:
= form_for Message.new, remote: true, format: :js do |f|
= hidden_field_tag :authenticity_token, form_authenticity_token
= f.text_field :name, placeholder: 'Naam'
= f.text_field :email, placeholder: 'E-mail'
= f.text_area :message, placeholder: 'Jouw bericht'
= f.submit
#flash-message
Мой контроллер:
def create
@message = Message.new(params[:message])
respond_to do |format|
if @message.valid?
# MessageMailer.contact(@message).deliver
format.html
format.js { flash.now[:success] = "Thank you for your message. I'll get back to you soon!" }
else
format.html
format.js { flash.now[:failure] = "Something went wrong!" }
end
end
end
Мой create.js.erb:
$('#flash-message').html("<%= j render 'flash' %>").delay(3000).fadeOut(4000);
На терминале вижу:
Started POST "/messages.js" for 127.0.0.1 at 2018-05-10 16:14:33 +0200
Processing by MessagesController#create as JS
Parameters: {"utf8"=>"✓", "authenticity_token"=>"/3VXW31YVYF/mfle+JiHHx1jRguLF4TkepPWGqXYhP4tc/qS2IfGWlWpvcW4A4pwwcTGmHZJHnpzajqT+ETLiw==", "message"=>{"name"=>"", "email"=>"", "message"=>""}, "commit"=>"Create Message"}
Rendering messages/create.js.erb
Rendered messages/_flash.html.slim (2.3ms)
Rendered messages/create.js.erb (3.8ms)
Completed 200 OK in 19ms (Views: 11.8ms | ActiveRecord: 0.0ms)
А в браузере я получаю
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
$('#flash-message').html("<div class=\"alert alert-failure\">Something went wrong!<\/div>").delay(3000).fadeOut(4000);
Я, очевидно, делаю что-то очень неправильное, но не понимаю, почему мой код javascript внезапно анализируется как json.
Я погуглил ошибку, но безрезультатно.
Есть предложения, что я могу делать не так?