rails-json-jquery не показывает содержимое файла просмотра

#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> . можете ли вы помочь..