Javascript 尝试呈现js.erb部分模板时出现问题

Javascript 尝试呈现js.erb部分模板时出现问题,javascript,jquery,ruby-on-rails,unobtrusive-javascript,Javascript,Jquery,Ruby On Rails,Unobtrusive Javascript,Rails版本6.0.2.1 Ruby版本2.6.5 我正在尝试使用jquery在应用程序的show视图中呈现分部 这是我的javascript文件: import $ from "jquery"; $(() => $("a#test-button").on("click", ev => { ev.preventDefault; $("div#teacher-form").html("<%= j render(partial: 'teacher_form')

Rails版本6.0.2.1 Ruby版本2.6.5

我正在尝试使用jquery在应用程序的show视图中呈现分部

这是我的javascript文件:

import $ from "jquery";
$(() =>
  $("a#test-button").on("click", ev => {
    ev.preventDefault;
    $("div#teacher-form").html("<%= j render(partial: 'teacher_form') %>");
  })
);

当我单击test按钮添加分部时,它会在视图中呈现以下代码片段,而不是实际的分部模板。无法理解发生了什么。

您似乎完全误解了JS.erb模板的工作原理

您不能使用
javascript\u-pack\u标记
引用
.js.erb
模板。这用于引用资产管道中的资产。而且您不能在资产管道中呈现分部,因为它们是在部署时编译的

您刚刚得到一个文本字符串
”的原因是资产不是通过webpack中的ERB发送的。链轮会这样做,并引发错误

相反,您可以编写
js.erb
模板,以便它更改页面:

def show
    @teachers = @year.teachers 
    respond_to do |format|
      format.html 
      format.js # renders show.js.erb
    end 
  end

//无法使用导入,因为导入未在资产管道中运行
//您必须使jQuery成为一个全局查询
$(“#教师表格”).html(“”);
当您单击链接时,Rails ujs驱动程序实际上只是加载该脚本并在页面上对其求值。前提是,这允许您在没有SPA框架或实际编写请求处理程序的情况下执行ajax请求和类似SPA的内容。这是不是一个好主意是有争议的


我不明白的是,为什么不首先将表单放在视图中,然后切换表单的可见性,而不是让服务器参与到客户端转换中。

您是否将文件类型设置为JS.erb?是的,我添加了正确的扩展名
def show
    @teachers = @year.teachers 
    respond_to do |format|
      format.html 
      format.js { 
        render 'student_school_years/_teacher_form', 
        layout: false
       }
    end 
  end
def show
    @teachers = @year.teachers 
    respond_to do |format|
      format.html 
      format.js # renders show.js.erb
    end 
  end
// You can't use imports since this is not run in the assets pipeline
// you have to make jQuery a global
$("#teacher-form").html("<%= j render(partial: 'teacher_form' %>");