我正在使用带有 jQuery ujs 的 Rails 3.0.3。
我想远程发送表格。包含表单的视图模板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,因为在使用 Rails 进行敏捷 Web 开发(4h 版)中的“26.4 少写多用 JQuery”一章中的说明。由于https://github.com/rails/jquery-ujs/issues/closed/#issue/52 ,我还添加了:format => :js。
当我调用http://0.0.0.0:3000/mains/index并提交表单时,实际上并没有远程提交,而是浏览器加载了http://0.0.0.0:3000/mains/search.js?remote=true反而。浏览器输出$('#search').html("<h1>Headline</h1>");
,而不是通过将 div#search 替换为<h1>Headline</h1>
给定来执行 JavaScript。
我试图找到一个解决方案,但到目前为止还没有成功......有人可以帮忙吗?