link_to_remote之后缺少模板

时间:2009-10-09 01:01:41

标签: javascript ruby-on-rails partials link-to-remote

我正在使用link_to_remote来更新我页面上的部分内容。问题是Rails找不到我的偏见。

我在控制器方法中指定了部分(html.erb文件)的完整路径:

def my_method
 create something

 render :partial => '/shared/partials/my_partial_form', :layout => 'false'
end

我知道控制器方法受到了影响,因为“某事”被创建了。我收到错误"Template missing [:controller_name]/[:method_name].js.erb not found"

任何人都可以解释为什么Rails似乎使用js.erb的默认路径?

提前致谢!

2 个答案:

答案 0 :(得分:2)

Rails正在响应JS格式。 render:partial不计为每个动作的动作1渲染/重定向调用。如果没有正确的渲染或重定向调用,Rails将根据格式,控制器和操作使用默认参数调用render。

Render:partial只返回调用者的文本,它不会构建响应。在这种情况下,部分呈现为HTML,但之后没有任何操作。附: :layout =>渲染部分时,false选项是多余的。

您希望使用render:update或RJS文件通过模板执行相同操作。

假设您要替换整个网页,简短版本就是这样的:

def my_method create something

  render :update do |page|
    page.replace_html :body, :partial => '/shared/partials/my_partial_form'    
  end
end

转到RJS路线,您可以创建app / views / resource / my_method.rjs文件并填写

page.replace_html :body, :partial => '/shared/partials/my_partial_form'

答案 1 :(得分:0)

尝试删除共享前面的/。

render :partial => 'shared/partials/my_partial_form', :layout => 'false'