我陷入了一个(显然)简单的问题。 在我的event_controller中,我有i_like_it动作:
def i_like_it
@event = Event.find(params[:id])
... # logic
respond_to do |format|
format.js
end
end
在我的情况下,“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
Rails可以使用:js选项渲染vanilla JavaScript,但我不想要 在控制器中使用Javascript 。
你有什么建议吗?
谢谢你, Alessandro DS
答案 0 :(得分:45)
如果你这样做:
respond_to do |format|
format.js { render :action => "different_action" }
end
它将加载RAILS_ROOT / app / views / 你的控制器 /different_action.js.erb。
format.js块只是确保如果它是一个.js请求,你默认设置了正确的标题,它默认情况下会查找.js.erb或.js而不是.html.erb。
您还可以使用render:file在文件系统上呈现恰好包含JS的任意文件,或者您可以使用render的其他常用选项。 There are a few of them
答案 1 :(得分:7)
尝试使用render :template => 'your_file_here'
代替
respond_to do |format|
format.js
end
render
的文档也介绍了其他一些选项。