在respond_to中呈现不同的Javascript文件

Ale*_* DS 24 javascript ruby jquery ruby-on-rails

我陷入了一个(显然)简单的问题.在我的event_controller中,我有i_like_it动作:

  def i_like_it
    @event = Event.find(params[:id])

    ... # logic

    respond_to do |format|
      format.js
    end
  end
Run Code Online (Sandbox Code Playgroud)

在我的情况下,"i_like_it"被调用:method => PUT(它是一个Ajax调用,"i_like_it.js.erb"将作为脚本返回,它将在浏览器上执行.)

我想渲染一个具有不同名称的Javascript文件(不是i_like_it.js.erb),但我没有在Rails API文档中找到任何选项.

respond_to do |format|
  format.js { render ??? }
end
Run Code Online (Sandbox Code Playgroud)

Rails可以使用:js选项呈现vanilla JavaScript,但我不想在控制器中使用Javascript.

你有什么建议吗?

谢谢Alessandro DS

cpm*_*cpm 45

如果你这样做:

respond_to do |format|
  format.js { render :action => "different_action" }
end
Run Code Online (Sandbox Code Playgroud)

它将加载RAILS_ROOT/app/views/your-controller /different_action.js.erb.

format.js块只是确保如果它是一个.js请求,你默认设置了正确的标题,默认情况下它会查找.js.erb或.js而不是.html.erb.

您还可以使用render:file来渲染文件系统中恰好有JS的任意文件,或者您可以使用render的其他常用选项.其中有一些.


Nik*_*bak 7

尝试render :template => 'your_file_here'而不是

respond_to do |format|
  format.js
end
Run Code Online (Sandbox Code Playgroud)

文档也render描述了其他几个选项.