我正在使用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的默认路径?
提前致谢!
答案 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'