你如何使用Ruby on Rails响应控制器中的另一个js文件?

per*_*nce 1 ruby-on-rails ruby-on-rails-3

我基本上有一个动作,因为逻辑需要返回另一个js文件的内容.我该怎么做呢?谢谢

应用程序/控制器/ classrooms_controller.rb

def create
  if params[:test_logic]
    respond_to do |format|
      format.js { render 'create_differently' } # This doesn't work.
    end
  else
    redirect_to root_path
  end
end
Run Code Online (Sandbox Code Playgroud)

应用程序/视图/教室/ create_differently.js.erb

alert('hi')
Run Code Online (Sandbox Code Playgroud)

ulf*_*f_t 5

你需要添加

 :layout => false 
Run Code Online (Sandbox Code Playgroud)

避免HTML的渲染布局的js文件.

另外,您可以像这样定义不同的js文件

:template => "classrooms/create_differently.js.erb"
Run Code Online (Sandbox Code Playgroud)

两者一起:

 format.js { 
    render :template => "classrooms/create_differently.js.erb", 
           :layout => false  
 }
Run Code Online (Sandbox Code Playgroud)

对于基于浏览器的测试,请注意调用js不是html!