Ruby On Rails 3 отправляет форму AJAX, результаты обновления в div - PullRequest
0 голосов
/ 21 октября 2010

Я застрял; Я сделал поиск, и я не могу найти указатель на то, как заставить этот проект работать. У меня есть форма на моем index.html.erb как:

<html>   <head>
    <title>Ajax List Demo</title>   <h1>Listing posts</h1> 

    <%= javascript_include_tag "prototype" %>   </head>   <body>
    <h3>Add to list using Ajax</h3>
    <% form_tag (  :remote=>true, :update => 'my_list', :action => :list , :method=>:post, :format =>:xml ) do %>

      Enter the url:
      <%= text_field_tag 'url' ,'', :size => 80 %>
      <%= submit_tag "Find" %>
    <% end %>
    <div id="my_list"><%= render :partial => 'profiles/list' %></div>   </body> </html>

Теперь у меня есть div с этим именем my_list. Когда я отправляю форму, я хочу, чтобы мой частичный _list.html.erb (внутри dir профилей, тоже пробовал home dir) обновился с результатами списка.

Мой домашний контроллер имеет этот метод:

def list
    puts "here!!!!"
   reader = Reader.new
  @profiles =  reader.processURL(params[:url])
    render :partial=>'profiles/list', :locals => { :profiles => @profiles}
end

Я получаю эту ошибку:

ActionView::MissingTemplate (Missing partial profiles/list with {:locale=>[:en, :en], :handlers=>[:rjs, :builder, :rhtml, :rxml, :
erb], :formats=>[:xml]} in view paths "C:/Users/....tree/app/views"):
  app/controllers/home_controller.rb:22:in `list'

Rendered C:/Ruby187/lib/ruby/gems/1.8/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/missing_template.erb
within rescues/layout (1.0ms)

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

1 Ответ

0 голосов
/ 29 октября 2010

Прежде всего я получаю ajax до render(@homepages) в index.html.erb через index.js.erb ОК, но мой поиск по обновлению @homepages не работает.

В вашем javascript_include_tag вы пропустили rails.js, который, я думаю, обрабатывает запрос ajax.javascript_include_tag :defaults сделал бы все это для вас плюс некоторых других, которые вам не нужны.При условии, что вы не используете jquery, вам нужен прототип и rails.js как минимум.

Я не думаю, что формат этого form_tag правильный:

<% form_tag (:remote=>true, :update => 'my_list', :action => :list , :method=>:post, :format =>:xml) do %>

Первое значение после«(» должно быть item_path, тогда условия :action => :list.

:method => post должны привести вас к действию create или new.

:update => 'my_list'будет сделано в list.js.erb с использованием javascript (прототипа)

Код для jquery и прототипа похож, но немного отличается (см. Railscast 205 )

Почему форматxml в form_tag, поместите его в контроллер "list". Мой список:

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @homepages }
  format.js
end

Не уверен, что вы можете избежать использования 'url', если это не так: url, который вы могли бы использоватьлибо.

Когда я получал отсутствующий шаблон, это было потому, что он искал файл search.html.erb. В вашем случае он ищет list.html.erb.

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