2014-11-15 2 views
1

Я новичок в Rails, и я пытаюсь отправить данные модели методу контроллера, из javascxript и отобразить список результатов ...

function submitResults() { 
    resultURL = "/result"; 
    resultData = JSON.stringify(results); 
    $.ajax({ 
    type: "POST", 
    url: resultURL, 
    data: { results: resultData}, 
    contentType: "application/html", 
    dataType: "html" 
    }); 

сервер показывает способ управления выполнен и вид визуализируется ...

Started POST "/result" for 127.0.0.1 at 2014-11-14 17:36:32 -0600 
Processing by ResultsController#create as HTML 
    Result Load (0.7ms) SELECT "results".* FROM "results" 
    Rendered results/index.html.erb within layouts/application (366.0ms) 
Completed 200 OK in 4722ms (Views: 408.3ms | ActiveRecord: 1.3ms) 

но браузер не делает вид. Вот мой метод создания, который срабатывает при вызове $ .ajax ...

def create 
    result = Result.new(result_params) 
    result.save 
    @results = Result.all 
    respond_to do |format| 
    format.html { render :index } 
    end 
end 

Почему браузер не загрузит индексный просмотр?

ответ

1

Вы вызов ajax ничего не предпринимаете с ответом, определите для него функции обратного вызова. Например .:

$.ajax({ 
    type: "POST", 
    url: resultURL, 
    data: { results: resultData}, 
    contentType: "application/html", 
    dataType: "html" 
}).done(function(response) { 
    //attach the response somewhere in the DOM. 
}); 

Проверьте AJAX док для всех обратных вызовов.

Кстати, вы обычно не хотите загружать всю страницу html через вызов ajax. Кажется, что страница, которую вы рендеринг, включает все (кажется, использует макет по умолчанию). В таком случае вызов AJAX может не иметь преимуществ (и усложнять), и вы можете захотеть сделать сообщение через html-форму.

+0

О, извините, я просто обновляю ответ. В вашем случае я предлагаю пойти с html-вызовом. javascript здесь не имеет никакой пользы. Но если вы хотите сделать это с помощью jquery, вы можете использовать $ (document) .html (response), который сохранит URL-адрес одинаково, но изменит весь DOM. – AOG

+0

Еще раз спасибо, это имеет смысл. Я просто пытаюсь выяснить способ вызова метода create из javascript. Использование $ .ajax - единственный способ, который я нашел до сих пор. Что вы подразумеваете под «html call»? Можете ли вы предоставить быстрый фрагмент кода, который я могу использовать для дальнейшего исследования? – BeachRunnerFred

+0

Ну, если вы хотите сделать это через javascript, тогда $ .ajax - лучший способ, но опять же я предлагаю, чтобы если результат POST (вызов создать) будет изменяться на странице браузера, то не делайте этого это через javascript. У Rails есть вспомогательные методы, которые помогут вам создавать html-формы (я имею в виду html, без javascript). См. [Здесь] (http://guides.rubyonrails.org/form_helpers.html) – AOG

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