3

我正在使用 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 的默认路径?

提前致谢!

4

2 回答 2

2

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

Render :partial 只是将文本返回给调用者,它不会构建响应。在这种情况下,部分被呈现为 HTML,但随后什么也不做。PS :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'
于 2009-10-09T01:49:10.580 回答
0

尝试删除共享前面的 /。

render :partial => 'shared/partials/my_partial_form', :layout => 'false'
于 2009-10-09T03:00:09.580 回答