为什么我无法在Rails 3中找到模板并从javascript中渲染?

时间:2011-10-26 03:29:09

标签: javascript ruby-on-rails-3 render

我使用的是link_to :remote => true,它正在运行show_call.js.erb。

$("#display-call").html(<%= render :template => "contact_calls/new"%>)

但是,我收到以下错误:

ActionView::Template::Error (Missing partial contact_calls/new with {:locale=>[:en, :en], :handlers=>[:prawn_xxx, :prawn, :prawn_dsl, :haml, :erb, :rhtml, :builder, :rjs, :rxml], :formats=>[:js, :html]} in view paths

在app / views / contact_calls / new.html.erb中有一个视图---但我得到这个错误,说它想要“部分”?我只想渲染常规视图。

以下是hew.html.haml当前调用的内容:

 1 - title "Sending call"
  2 = render :partial => 'call', :call => @call

对于contact_call控制器我定义@call

我把它移到了__call partial:

 1 #main
  2   = render :partial => 'contacts/contactpartial'
  3   %p= link_to call.title, call_path(call)
  4   = render :partial => 'form'
  5   %p= link_to "Back to List", contact_calls_path

1 个答案:

答案 0 :(得分:1)

partials的文件名必须以下划线开头;你可以调用你的文件app/views/contacts_calls/_new.html.erb,但更有可能想要将公共代码提炼成另一个部分,比如_call.html.erb,并通过以下内容在两个模板中呈现它:

# new.html.erb
<%= render 'call', :call => @call %>

// show_call.js.erb
$("#display-call").html(<%= render 'call', :call => @call %>);

请注意,我假设要将名为call的局部变量传递给您的部分。

您无法在其他视图中呈现顶级视图。如果要渲染另一个视图的某些部分,则必须将共享视图代码提取为部分视图并从顶层视图中呈现它。