尝试在rails控制器中使用return时遇到问题。这不起作用:
class UsersController < ApplicationController
respond_to :json
def create
@user = User.create params[:user_info]
respond_with @user
end
end
这有效:
class UsersController < ApplicationController
respond_to :json
def create
@user = User.create params[:user_info]
respond_with @user do |format|
format.json { render json: @user.to_json }
end
end
end
为什么呢?这是我使用不起作用的服务器日志中的错误:
NoMethodError (undefined method `user_url' for #<UsersController:0x007fd44d83ea90>):
app/controllers/users_controller.rb:7:in `create'
我的路线是:
resources :users, :only => [:create]
答案 0 :(得分:4)
responds_with
尝试重定向到user_url
,因此它会在您的用户控制器中查找您没有的show
方法,因为您的路由仅限于{{仅限1}}方法。由于create方法默认情况下重定向到show方法,因此不起作用。但是在你的第二个版本中,你实际上是在渲染一些东西,所以不会发生重定向。
如果这是你想要的,你可以给create
:location
选项,如下所示:
respond_with
或像在第二个版本中那样使用渲染版本。