У меня есть форма, которая загружает файл через ajax (используя удаленный самоцвет), который работает нормально. Я хотел бы получить ответ от сервера как JSON и вызвать функцию javascript в браузере. Как я могу это достичь? Могу ли я изменить настройку в теге формы?ROR - Запрос JSON от контроллера
Вид:
<%= form_tag import_companies_path, remote: true do %>
<%= file_field_tag :file %>
<%= submit_tag "Import" %>
<%end%>
-регулятора:
def import
respond_to do |format|
options = { col_sep: ',', converters: :numeric, headers: true }
array = []
CSV.foreach(params[:file].path, options) do |row|
array.push(row.to_hash)
end
logger.debug "Parsed CSV companies: #{array.inspect}"
format.html { redirect_to companies_path }
format.json{
render json: { items: JSON.pretty_generate(array)}
}
format.js { render js: JSON.pretty_generate(array) }
end
end
Удивительно это сработало! Какой другой вариант? Я хотел бы обработать ajax success/error ... – Emon
@Emon другие параметры: (1) отправить ajax с помощью jquery в форме submit; (2) ответьте в формате 'json' вместо' js', но это включает в себя прослушивание событий формы ('ajax: complete'), и на самом деле это неправильное использование' remote: true'. Я бы поставил на (1) или то, что дано в моем ответе. Ответ более «Railsy», затем вариант (1). – dimakura
еще одним способом является удаление даже 'receiverFunction' из представления формы и определение его в виде' js'. Но, по-моему, это слишком далеко. – dimakura