2015-08-27 3 views
0

Я работаю с Rails 4 и в основном я ищу значение на моей веб-странице html, проходящей через DOM с помощью jquery. хранить значение в переменной с именем ключ, и я хочу использовать это значение, чтобы затем сделать запрос, который будет выглядеть следующим образом: Record.find(id: key).nameAJAX вызов, как получить мою переменную javascript

я выполнить вызов AJAX и работает хорошо (я проверил это делает статус json ok). Но теперь, как я могу использовать/получить параметр ключ в моем контроллере?

У меня есть Пользователь и Запись. В каталоге app/views/users у меня есть частичный _form.html.erb, в котором я делаю javascript.

var key = $('input#record_id').val();

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

Так что я делаю вызов AJAX, который выглядит следующим образом:

$.ajax({ 
 
    url: "/search", 
 
    type: "POST", 
 
    data: { 
 
    value: key 
 
    }, 
 
    complete: function(){ 
 
    console.log('success'); 
 
    } 
 
    });

И в моих конфигурации маршрутов файл Я написал этот маршрут:

post '/search' => 'users#search' 

В мой пользовательский контроллер я написал метод следующим образом:

def search 
 
    @record = Record.find(params[:key]) 
 
end

ли @record доступны в моем частичное? Как я могу напечатать на мой взгляд результат моего запроса?

Может ли кто-нибудь сказать мне, правильно ли я поступаю правильно или неправильно для моего звонка AJAX? Спасибо за любую помощь. Если я забыл упомянуть любую информацию, которую вам может понадобиться, скажите мне, и я отредактирую свой пост.

Я добавил полную функцию в моем вызове AJAX, который должен показать success, если вызов AJAX был сделан и в моем журнале консоли у меня это сообщение «успех», который появляется

+0

404 Ошибка только в том случае, если путь неправильный, что также означает, что страница не указана в введенном пути. убедитесь, что вы используете правильный путь в ajax. – Farhan

+0

Я перезапускаю свой WebServer, и теперь он работает хорошо. Weird. Я только что редактировал свой пост, если бы у вас возникли какие-либо идеи о том, как получить мою переменную ** key ** в моем контроллере? – GDMN

ответ

1

Для 404 не найдено URL-адрес должен быть неправильным.

И получить param ключ в контроллере необходимо изменить data к data: {key: key} или если вы используете data: {value: key}, то ваши действия должны изменить название Парам как @record = Record.find(params[:level])

В принципе, вы не используете правильное название PARAM в вашем контроллере, поэтому проблема возникает. Надеюсь, поможет.

Чтобы ответить на ваш второй вопрос: @GDMN, вам нужно получить свои основы правильно! Каждый аякс имеет успех и обратный вызов. Вы можете вернуть json из своего действия, которое будет использоваться путем обратного вызова успеха, и вы могли бы делать все, что от вас хотите. По существу в рельсах вы можете вынести JS файл, как этот

Создайте файл с именем search.js.erb и использовать яваскрипт код в нем, как показано ниже

$('.some_id_or_class').html("<%= @record.name %>") 

, который будет просто заменить элемент этого класса со значением это возвращает @record.name

+0

Я сделал так, как вы сказали, и я использую 'data: {key: key}' и, похоже, работает. Но как я могу показать в своих представлениях результат запроса 'Record.find (id: key) .name', который находится в моем контроллере? – GDMN

+0

Я создал файл 'search.js.erb' с данным javascript' $ ('div # result'). Html ("<% = @ record.name%>") ', но ничего не появляется в моем div ... . Я написал в своем Ajax-вызове 'data: {key: key}' и в моем контроллере '@record = Record.find (params [: key])' ** это правильно? ** – GDMN

+0

@GDMN, вам нужно debug, я могу просто дать вам указания о том, как решить вашу проблему. Вы можете принять ответ, если он ответил на ваш основной вопрос. Вы можете задать новый вопрос для новой проблемы. –

-1

поставить полный URL url: "http://yoursite.domain/search",

+0

Вы должны объяснить, почему ваше решение будет работать. Кроме того, при указании относительного пути, например '/ search', по существу будет называться тот же URL-адрес, что и в вашем ответе. –

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