2016-07-09 2 views
0

У меня есть этот вызов ajax, который активирует действие в контроллере. Моя проблема в том, что действие не получает params [: id], что другие методы в этом контроллере имеют. Я предполагаю, что это потому, что он получает параметры из URL-адреса. Но как отправить текущий идентификатор страницы с помощью ajax?Отправка id-параметра в json с Rails, ajax

$.ajax({ 
    url: "/test", 
    type: "GET", 
    dataType: "json", 
    success: function(data) { 
     console.log(data); 
    }, 
    error: function() { 
     console.log("Ajax error!") 
    } 
}); 

Контроллер:

def test 
    @user = User.find(params[:id]) 
    render :json => { :name => @user.username }.to_json 
end 

NB: Аякс находится в .js файла не в представлении. И активируется, когда кто-то загружает страницу

ответ

0

Возможно, вы захотите добавить свой текущий идентификатор страницы в виде скрытого значения в html. Например, в example/current_view.html.erb, добавить где-нибудь строку:

<%= hidden_field_tag :current_id, params[:id] %> 

Позже, вы можете получить доступ к этой стоимости в вашем АЯКС запроса и добавить его в URL-адрес, с JQuery:

$.ajax({ 
    url: "/test/" + $('#current_id').val(), 
    type: "GET", 
    ... 
}); 

Если вы не» t хотите изменить текущий вид, тогда вы можете проанализировать URL-адрес (расположенный в window.location.href) с помощью javascript и извлечь идентификатор с помощью регулярных выражений.

0

Вы не посылаете на сервер data. Для получения подробной информации. обратитесь к документации jquery ajax здесь http://api.jquery.com/jquery.ajax/

Вы можете либо иметь скрытую переменную на странице, которая хранит id, либо сделать ее атрибутом данных.

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

  • Нет связанных вопросов^_^