【发布时间】:2011-06-01 02:44:30
【问题描述】:
我正在使用以下代码在 rails 3 中设置 AJAX 操作。代码的 AJAX 部分似乎可以工作,但它没有请求正确的文件,我的 respond_to 为它提供常规 HTML。
路由信息:
resources :zones do
resources :records
end
控制器:
def new
@zone = Zone.new
respond_to do |format|
format.html
format.js
end
end
视图中的链接(haml):
= link_to 'Add a zone →', new_zone_path, :remote=>true
从 link_to 生成的 HTML(还要注意 html 实体的渲染失败……但这是另一个问题):
<a href="/zones/new" data-remote="true">Add a zone &#8594;</a>
对于 kicks,视图/区域的目录列表。我不确定我这样做是否正确, 所以我有 new.js.rjs 和 new.rjs。它们都具有相同的内容,但从不被操作拾取。
| `~zones/
| |-_form.html.haml
| |-_record.html.haml
| |-edit.html.haml
| |-index.html.haml
| |-new.html.haml
| |-new.js.rjs
| |-new.rjs
| `-show.html.haml
最后,我点击链接时的服务器日志:
Started GET "/zones/new" for 127.0.0.1 at Wed Dec 29 00:04:03 -0700 2010
Processing by ZonesController#new as */*
User Load (0.4ms) SELECT "users".* FROM "users" WHERE ("users"."id" = 1) LIMIT 1
Rendered zones/_form.html.haml (22.1ms)
Rendered zones/new.html.haml within layouts/application (34.9ms)
Completed 200 OK in 80ms (Views: 42.0ms | ActiveRecord: 0.4ms)
如您所见,它正在为请求呈现 .html 文件。现在,为了测试,我直接点击页面http://localhost:3000/zones/new.js。它提供 new.js.rjs。此外,javascript 远程调用正在工作。 Firebug 显示请求和响应,但它请求错误的页面。
为了测试我也这样做了:
= link_to "Add a zone", '/zones/new.js', :remote=>true
这对于 javascript 工作正常(下载并执行 rjs 并正常工作),但对于禁用 javascript 的系统没有很好的故障转移。
对于我使用 jquery 的价值。
我觉得我在路由或链接语法中遗漏了一些东西,但我可以在网上和文档中找到的所有示例似乎都准确地显示了我在做什么。有什么问题?
谢谢。
【问题讨论】:
标签: ruby-on-rails-3 rjs link-to-remote