在js.erb文件中使用render(:action =>“action”)

时间:2011-05-05 16:18:58

标签: ruby-on-rails-3

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

$(".box:first").after("<%= escape_javascript(render :action => "new" ) %>");

将导致以下错误消息:

ActionView::Template::Error (undefined method `formats' for nil:NilClass):
    1: $(".box:first").after("<%= escape_javascript(render(:action => "new") ) %>");
  • 如果我尝试渲染部分使用相同的代码,则使用:partial =&gt; “new”(假定存在给定名称的部分)
  • 如果我更改':action'ff。错误消息将是相同的。 ''foobar'。

任何想法我做错了或者这是一个简单的rails中的错误? (3.0.7)

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

  

使用render with:action是一个   Rails的常见混淆源   新人。指定的操作是   用于确定哪个视图   渲染,但Rails不运行任何   该行动的代码   控制器。任何实例变量   您必须在视图中需要   在之前的行动中设置   调用渲染。

http://guides.rubyonrails.org/layouts_and_rendering.html#using-render