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的其他常用选项.其中有一些.
尝试render :template => 'your_file_here'而不是
respond_to do |format|
format.js
end
Run Code Online (Sandbox Code Playgroud)
文档也render描述了其他几个选项.