【问题标题】:Rails 3 AJAX Follow Button Different ControllersRails 3 AJAX跟随按钮不同的控制器
【发布时间】:2012-04-15 10:50:19
【问题描述】:

我有一个带有关注/取消关注按钮的 Rails 3 应用程序。

_follow.html.erb_unfollow.html.erb 表格在控制器 A 中。控制器B 具有实际的创建和销毁方法(它是has_many :through 关系的中心)。因此,与关注和取消关注关联的create.js.erbdestroy.js.erb位于控制器B的视图文件夹中。

AJAX 代码如下所示: $("#followform").html("<%= escape_javascript(render 'A/follow') %>")

当我将render A/follow 替换为<p>Testing</p> 之类的东西时,该代码有效,但无法使用上面的代码呈现部分。

难道不能以这种方式从外部控制器渲染视图吗?我检查了Rails Guide,他们似乎暗示确实如此。那么,有人知道这里的问题吗?

非常感谢任何帮助!!!

【问题讨论】:

  • 检查你的 JS 错误控制台,看看你是否得到了错误的响应。 (Chrome 中的“网络”很棒。我听说 Firebug 也有一个网络监视器)
  • 是的,在我单击按钮后它立即显示“内部服务器错误 500”,这似乎表明它无法找到该部分。但是,如果它在那里(并且按钮的功能正常工作),为什么会发生这种情况?
  • 您使用的是哪个控制台?如果您在 Chrome 中单击响应,然后单击预览选项卡,您可以看到实际错误。
  • 嗯。取消关注时显示Called id for nil...,关注时显示undefined method model_name' for NilClass:Class`。但是该按钮仍然有效,因为当我刷新页面时,它会正确显示,就好像我成功关注或取消关注一样。那么,这两个错误指的是什么?
  • 加上你发送的params

标签: ruby-on-rails ruby-on-rails-3 jquery


【解决方案1】:

听起来问题是您的部分没有获得他们需要的所有信息,因为您在部分中有一个未设置的实例变量,或者可能是一个局部变量。

检查您部分中的所有变量,并确保它们被设置在链的某个位置。

如果您发布提供部分的实际控制器操作以及部分代码本身,我们可能会提供更多帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    相关资源
    最近更新 更多