Как сделать AJAX-вызов с использованием Rails для действия, отличного от Create или Destroy - PullRequest
1 голос
/ 11 июля 2011

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

<%= button_to "Click me!", :action => "some_action", :remote => true %>
Which will send an AJAX request back to the server, in which you need to handle in your controller

def some_actoin
    // Update your database here
    respond_to do |format|
        format.js { render 'somepartial' }
    end
end

Означает ли этот ответ, что мне нужно создать маршрут, связанный с def some_action? Если да, то какой формат должен пройти этот маршрут.

Я не хочу, чтобы пользователь уходил со страницы, я просто хочу обновить один div на текущей странице.

Ответы [ 2 ]

1 голос
/ 11 июля 2011

По сути, да, вам нужно будет добавить маршрут к файлу route.rb.

Так что, если ваш контроллер называется posts_controller, и вы хотите пометить определенный пост как видимый:

map.resources :posts, :member => {:seen => :post}

Это добавит маршрут к / posts / 1 / seen (где '1' - это идентификатор сообщения, для которого выполняется видимое действие)

1 голос
/ 11 июля 2011

У тебя хорошее начало.При нажатии этой кнопки rails / сервер отправит HTTP-запрос этому контроллеру / some_action.Он попадет в тот метод действия, где вам нужно сохранить в базе данных.Оттуда он ответит javascript (отсюда и формат.js).Файл javascript, на который он отвечает (при условии, что вы используете jquery, а не прототип), будет называться some_action.js.erb.В этот файл вы помещаете все вызовы функций jquery и т. Д., Которые вы хотите выполнить после возврата запроса ajax.

РЕДАКТИРОВАТЬ:

Для дальнейшего уточнения маршрутов.Вы должны иметь возможность получить доступ к controller / some_action как обычно.Это означает, что должен быть определен маршрут:

match 'controller/some_action' => "controller#some_action"

, однако вам не нужно ничего делать, чтобы сообщить rails свой удаленный маршрут.

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