ruby-on-rails-3 - 轨道 3 Link_to :remote is not triggering RJS

标签 ruby-on-rails-3 rjs link-to-remote

我正在使用以下代码在 Rails 3 中设置 AJAX 操作。代码的 AJAX 部分似乎有效,但它没有请求正确的文件,我的 respond_to 为它提供常规 HTML。

路由信息:

resources :zones do
  resources :records
end

Controller :

def new
  @zone = Zone.new
  respond_to do |format|
    format.html
    format.js
  end
end

View 中的链接(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 &amp;#8594;</a> 

对于踢球, View /区域的目录列表。我不确定我这样做是否正确, 所以我同时拥有 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 是值得的。

我觉得我在路由或链接语法中遗漏了一些东西,但我可以在网上和文档中找到的所有示例似乎都准确地显示了我在做什么。有什么收获?

谢谢。

最佳答案

你需要明确地告诉 Rails 你想要 js 格式:

= link_to 'Add a zone &#8594;', new_zone_path(:format => :js), :remote=>true

作为一种解释方式:您必须指定 .js 扩展名,因为 Rails 不区分。在许多情况下,您可能希望使用 Ajax 获取 html 或 json——而不仅仅是 javascript。 Rails 允许您以任何格式获取任何内容,这就是您必须指定它的原因。

关于ruby-on-rails-3 - 轨道 3 Link_to :remote is not triggering RJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4555267/

相关文章:

javascript - link_to_remote 后缺少模板

javascript - Ruby on Rails : Open Modal Box Link doesn't work Update: link_to_remote

ruby-on-rails-3 - Rails3 - 如何使用 link_to 帮助程序将 Javascript 变量发送到 Controller 的操作?

ruby-on-rails - 使用模板创建 Rails 项目的问题

ruby-on-rails - 使用 Rails 3.2.22.2 时,我可以使用的最高 Ruby 版本是多少?

javascript - 从ajax调用重定向主窗口

javascript - 使用 javascript 进行远程 => true 调用

ruby-on-rails - 获取十进制数的小数部分

ruby-on-rails - searchkick 索引相关模型字段

ruby-on-rails - 对使用哪个 Prototype 助手感到困惑