#javascript #ruby-on-rails #ajax
#javascript #ruby-on-rails #ajax
Вопрос:
Я новичок в rails, поэтому я не знаю, является ли это лучшей практикой. Я пытаюсь отправить пользовательский ввод из индексного представления в индексное действие с помощью ajax, а затем обновить представление с помощью пользовательского ввода. Я не пытаюсь сохранить этот ввод в базе данных.
@url всегда возвращает nil .
ПРИМЕЧАНИЕ: я пытаюсь создать пользовательское действие, но безуспешно, потому что для этого требуется шаблон.
Заранее спасибо 🙂
Действие индекса
def index
@url = params[:option]
end
Представление индекса
<input type="text" id="exampleFormControlInput1">
<p id="resp-result"><%= @url %></p>
<script type="text/javascript">
$(".button").click(function(event){
var userinput = document.getElementById("form").value;
console.log(userinput);
event.preventDefault();
$.ajax({
url:"/responses/",
type: "POST",
data: {option: userinput},
dataType: "text",
success:function(result){
alert("success" result);
},
error:function(result){
alert("error" result);
}
});
});
</script>
Комментарии:
1. Поскольку вы делаете ajax-запрос, вам нужно ответить с помощью json. Установка значения в
@url
значение просто сделает его доступным для вашего представления, что не похоже на то, что вы хотите.2. @vich — 100% согласен с тем, что простого указания
@url
значения, вероятно, недостаточно. Однако я не думаю, что на 100% точно сказать: «Поскольку вы делаете запрос ajax, вам нужно ответить с помощью json». Я все время выполняю ajax-запросы, которые получают html в качестве ответа. Возможно, я неправильно понял.3. @jvillian вы правы, я просто сделал обобщение, основанное на этом вопросе. Вам, конечно, не нужно отвечать с помощью json, но, судя по сути вопроса, это то, что, вероятно, ищет OP.
4. @vich @jvillian Спасибо за ответ. извините, я вас не понимаю. но я пытаюсь изменить действие индекса на « @url = params[:option].to_json « но все равно я получаю null в представлении индекса
5. Я бы рекомендовал ознакомиться с документацией Rails по ajax . Короче говоря, вы хотите что-то вроде
render json: params[:option]
. Об этой теме можно узнать совсем немного, но я оставлю это на этом.
Ответ №1:
Юна, вам нужно будет вывести ответ в формате json. давайте предположим, что ваш ajax-скрипт может правильно отправлять данные в серверную часть ruby on rails.
Попробуйте это
в ajax этого нет
url:"/responses/",
но
url:"/responses.json",
затем вы можете получить результат согласно
alert("success" result.myurl);
вы можете использовать myurl как часть ответа json
Наконец, попробуйте это
def index
respond_to do |format|
#@url = params[:option]
@url='nancy more url'
format.json do
render json: {myurl: @url}.to_json
end
end
end