#javascript #ruby-on-rails #jquery
#javascript #ruby-on-rails #jquery
Вопрос:
я новичок в jquery.
У меня есть вызов контроллера, как показано ниже:
jQuery('#search_form').submit(function(){
jQuery.post("topics/topics_details", {
'topic_name': jQuery('#topic_name').val(),
}, function(response){
}, 'json');
alert("hello");
return false;
});
Затем из внутренней функции я выполняю некоторые инструкции.
def topics_details
@tag=params[:topic_name]
puts "nnTopic = ",@tag
end
затем мне нужно выполнить файл просмотра (topics_details.html.erb).Но, к сожалению, это представление не отображается (но отображается в консоли.), вместо этого отображается предупреждение.
Как вызвать частичный файл?render_to_string /json можете ли вы привести простой пример…
Кто-нибудь может, пожалуйста, помочь … заранее спасибо…
Комментарии:
1. Здесь всевозможные проблемы, и трудно понять, что вы на самом деле пытаетесь сделать.
Ответ №1:
Здесь всевозможные проблемы, и трудно понять, что вы на самом деле пытаетесь сделать. Ваше предупреждение находится за пределами вызова jQuery.post, поэтому оно всегда будет происходить. Почему там это предупреждение? Вы ничего не делаете с ответом, поэтому вам нужно либо: а) поместить что-либо в блок функции (ответа), либо б) удалить это и позволить rails обрабатывать ответ, например, в файле topics_details.js.rjs в папке app / views / topics. Обычно при этом содержимое div на странице заменяется определенной частью. Вы не «выполняете файл просмотра» как таковой, а скорее оцениваете его и заменяете некоторое содержимое на странице.
Вместо того, чтобы перехватывать отправленную форму и отправлять ajax-запрос, почему бы просто не сделать ее удаленной формой? Таким образом, он будет автоматически отправлен с использованием ajax, и ваш контроллер обработает его обычным способом, а затем ответит своим блоком формата .js, а не блоком формата .html. По умолчанию будет выполнен поиск файла с именем .js.rjs в соответствующей папке просмотра. например
<%= form_remote_tag :url => '/topics/topics_details' do %>
usual form stuff here - fields, submit etc
<% end %>
Это приведет к отправке ajax-запроса в /topics /topics_details. Это делает то, что он делает обычно, например, это может быть обновление переменной с именем @topics, которая содержит массив объектов темы. Они могут быть перечислены на вашей странице в div с идентификатором «темы». Итак, вам просто нужно обновить этот div. Убедитесь, что этот div находится в частичном файле с именем ‘_topics.html.erb’ в папке «темы», и тогда у вас может быть просто следующий файл js.rjs:
#in app/views/topics/topics_details.js.rjs
@page.replace "topics", :partial => "topics/topics.html.erb"
Комментарии:
1. здравствуйте, вместо файла .html.erb будут отображаться только файлы .js.rjs.
2. здравствуйте, в рамках поиска по теме я делаю это. Если тема уже существует, перенаправьте на страницу topic_details. В противном случае этот раздел необходимо добавить в качестве нового раздела. Второй работает нормально в некоторых диалоговых окнах. Итак, я не могу изменить стиль <form> . можете ли вы помочь..