Don*_*n P 41 ruby ruby-on-rails respond-to ruby-on-rails-4
我有一个控制器"UserController",应该响应正常和ajax请求http://localhost:3000/user/3.
当它是正常请求时,我想渲染我的视图.当它是一个AJAX请求时,我想返回JSON.
正确的方法似乎是一个respond_to do |format|障碍.编写JSON很简单,但是如何让它响应HTML并像往常一样呈现视图?
def show
@user = User.find(params[:id])
respond_to do |format|
format.html {
render :show ????this seems unnecessary. Can it be eliminated???
}
format.json {
render json: @user
}
end
end
Run Code Online (Sandbox Code Playgroud)
Ami*_*Jha 79
根据我的知识,它不需要在format.html中"渲染显示",它将自动查找ex:show.html.erb的html请求和show,js,erb for JS request的相应操作视图.
所以这会奏效
respond_to do |format|
format.html # show.html.erb
format.json { render json: @user }
end
Run Code Online (Sandbox Code Playgroud)
另外,您可以通过检查request.xhr来检查请求是否为ajax?如果request是ajax,则返回true.
San*_*osh 19
是的,您可以将其更改为
respond_to do |format|
format.html
format.json { render json: @user }
end
Run Code Online (Sandbox Code Playgroud)