Ruby on rails 3 在js.erb文件中使用render(:action=>;action";)

Ruby on rails 3 在js.erb文件中使用render(:action=>;action";),ruby-on-rails-3,Ruby On Rails 3,我尝试将呈现操作的结果分配给页面上的元素。这应该是一项简单的任务,但有以下声明: $(".box:first").after("<%= escape_javascript(render :action => "new" ) %>"); $(“.box:first”)。在(““new”)%之后; 将导致以下错误消息: ActionView::Template::Error (undefined method `formats' for nil:NilClass): 1

我尝试将呈现操作的结果分配给页面上的元素。这应该是一项简单的任务,但有以下声明:

$(".box:first").after("<%= escape_javascript(render :action => "new" ) %>");
$(“.box:first”)。在(““new”)%之后;
将导致以下错误消息:

ActionView::Template::Error (undefined method `formats' for nil:NilClass):
    1: $(".box:first").after("<%= escape_javascript(render(:action => "new") ) %>");
ActionView::Template::Error(nil:NilClass的未定义方法“formats”):
1:$(“.box:first”)。在“(“new”))%之后“>”;
  • 如果我尝试使用:partial=>“new”(假定具有给定名称的分部存在)呈现分部,则相同的代码也可以工作
  • 如果我将“:action“f.e.更改为“:foobar”,则错误消息将相同

你知道我做错了什么吗?或者这只是rails中的一个bug?(3.0.7)

这是应用程序中的一个错误。实际上,它是控制器中的
操作中的一个错误

操作渲染的结果?这可能不是最好的主意。正如您所说的,当您使用partial时,代码可以工作,这就是您应该使用的。 这来自官方Rails指南:

使用render with:action是一种 Rails经常引起混淆 新来者。指定的操作是 用于确定要查看的视图 渲染,但Rails不运行任何 中该操作的代码 控制器。任何实例变量 您在视图中所需的 在当前操作之前设置 调用render


它不应该运行任何代码!它应该只渲染给定操作的视图。