Не можете получить ФОРМУ для удаленной отправки в Rails 3.0.3? - PullRequest
1 голос
/ 03 февраля 2011

Я использую Rails 3.0.3 с jQuery ujs.

Я хочу отправить форму удаленно. Шаблон представления mains / index.html.erb , содержащий форму, выглядит следующим образом:

...
<%= form_tag :remote => true, :controller => "mains", :action => "search", :format => :js do %>
<div class="dialog">
<table>
<tbody>
<tr class="prop">
<td valign="top" class="name">
 <%= label_tag(:location_start, "Location Start:") %>
</td>
<td valign="top">
<%= text_field_tag(:location_start) %>
</td>
...
</tbody>
</table>
</div>
<div class="buttons">
<span class="button"><%= submit_tag("Search") %></span>
</div>
<% end %>
...

Контроллер mains_controller.rb выглядит следующим образом (удалены ненужные вещи):

class MainsController < ApplicationController

def index
  respond_to do |format|
    format.html # index.html.erb
  end
end

def search
  respond_to do |format|
    format.js { render :template => 'mains/search.js.erb'}
  end
end

end

Шаблон представления mains / search.js.erb имеет следующее содержимое:

$('#search').html("<h1>Headline</h1>");

Я использую search.js.erb вместо search.js.rjs из-за инструкций в главе «26.4 Пишите меньше и делайте больше с JQuery» в Agile Web Development с Rails (4-е издание). Я также добавил : формат =>: js из-за https://github.com/rails/jquery-ujs/issues/closed/#issue/52.

Когда я звоню http://0.0.0.0:3000/mains/index и отправляю форму, она на самом деле не отправляется удаленно, но браузер загружает http://0.0.0.0:3000/mains/search.js?remote=true. Браузер выводит $('#search').html("<h1>Headline</h1>"); вместо выполнения JavaScript путем замены поиска div # на <h1>Headline</h1>.

Я пытался найти решение, но пока не удалось ... Может ли кто-нибудь помочь?

1 Ответ

1 голос
/ 03 февраля 2011

Решил проблему, заменив <%= form_tag :remote => true, :controller => "mains", :action => "search", :format => :js do %> на <%= form_tag( {:controller => "mains", :action => "search"}, :remote => true ) do %> и обновив до последней версии jQuery ujs ...

...