рельсы отправить запрос - PullRequest
3 голосов
/ 14 августа 2011

Я не совсем понимаю, как обрабатываются запросы в рельсах, в моем контроллере у меня есть что-то вроде этого:

def method_to_handle_request
  # do stuff
end

Тогда в представлении у меня есть этот JavaScript:

$.post("/", {method_to_handle_request: "value"}, function(data) {
  // do something with data
});

Это неправильно: data в JavaScript в конечном итоге просто страница. Таким образом, мой вопрос: как мне обрабатывать запросы в рельсах? Я читал «Agile Web Development с Rails», и этот раздел не имеет для меня особого смысла. Спасибо

1 Ответ

5 голосов
/ 14 августа 2011

Rails использует настроенные маршруты, чтобы указать на соответствующее действие контроллера. Вы должны указать маршрут в файле config / rout.rb, чтобы отправить запрос через желаемое действие. В вашем контроллере вы определили method_to_handle_request. Вы должны убедиться, что вы определили маршрут для этого. Есть много способов сделать это в файле rout.rb, и они хорошо описаны в этом руководстве .

Затем в вашем method_to_handle_request вы должны визуализировать / отформатировать ваш вывод в формате JSON или XML или как хотите, чтобы ваше представление использовалось. Если вы этого не сделаете, вы в конечном итоге просто вернете плоский шаблон HTML. Вот хороший ресурс для рендеринга представлений, в котором, в частности, есть раздел, посвященный JSON.

Итак, вот небольшой пример того, что я имею в виду:

в config / rout.rb

resources :foos do
  member do
    post 'do_my_foo'
  end
end

в foos_controller.rb

def do_my_foo
  foo = Foo.find(params[:id])
  # do some things to poor ole foo
  some_cool_data_about_foo = ...

  respond_to do |format|
    format.json { render :json => some_cool_data_about_foo }
  end
end

Затем, когда вы вызываете его с помощью ajax, вы получаете данные JSONified в свой обработчик.

Боже, надеюсь, это то, о чем ты спрашивал ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...