Что я должен сделать, чтобы выполнить эту функцию? - PullRequest
0 голосов
/ 02 апреля 2011

Итак, у меня есть форма для добавления тем (тегов) к видео:

<%= form_for @video, :url => {:action => "update"}, :remote => true do |f| %>
  <div class="field">
  <%= f.text_field :topic_names, :class => "topic_field" %>
  </div>
  <%= f.submit "Add Topic" %>
<% end %>

Однако я хочу, чтобы форма изначально отсутствовала и появлялась только после того, как пользователь щелкнет ссылку.Первоначально я хотел загрузить форму из другого файла с помощью jQuery с таким кодом:

$("#edit_topics_link").click(function(e){
        e.preventDefault();
        $(".topic_form").load("topic_form.html.erb");
        $("#edit_topics_link").hide();
    });

Проблема заключается в том, что при втором удалении формы из ее первоначального вида возникает ошибка JS:Uncaught TypeError: Cannot set property '_renderItem' of undefined

Я думаю, что это может быть связано с тем, что форма обрабатывается с помощью запроса AJAX, поскольку я передаю ей параметр :remote => true.

В любом случае, из-заЭта ошибка, я думаю о том, чтобы просто сохранить форму в представлении и скрыть ее, а затем показать ее, когда пользователь нажимает на ссылку.Это плохая идея?Если я должен загрузить форму, как я могу предотвратить эту ошибку JS?

1 Ответ

0 голосов
/ 03 апреля 2011

Я хотел бы загрузить и сохранить его скрытым при загрузке страницы, а затем показать его при нажатии. Форма будет отображаться быстрее, чем делать другой запрос к серверу, и сколько это будет стоить, добавляя ее на страницы, где пользователь может ее не показывать? вероятно, миллисекундная нагрузка просмотра и миллисекунда передачи http-данных?

Хотя я думаю, что это лучший подход, стоит отметить, что ваша ошибка, вероятно, приводит к следующему:

$(".topic_form").load("topic_form.html.erb");

Вы должны вызывать контроллер / действие внутри нагрузки. Jquery load делает запрос на сервер, и он будет вызывать этот URL: http://yoursite.com/topic_form.html.erb. Я предполагаю, что маршруты не существуют. Вам нужно визуализировать эту форму из действия вашего контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...