我在Snow Leopard上使用Rails 3.0.0.rc和Ruby 1.8.7。我使用Builder来限制render :xml
为User模型对象返回的内容。它没有按预期工作,所以我注释掉了format.xml
块。
例如,这是我的users_controller.rb:
def create
# TODO: Limit the frequency at which this can be called.
@user = User.new
@user.first_name = params[:user][:first_name]
@user.last_name = params[:user][:last_name]
# etc...
respond_to do |format|
if @user.save
format.html { redirect_to(@user, :notice => 'User was successfully created.') }
format.xml { render :xml => @user, :status => :created, :location => @user }
else
format.html { render :action => "new" }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
end
我更改了第一个format.xml
并注释了该块:
format.xml # { render :xml => @user, :status => :created, :location => @user }
当我删除评论并重新引入该块时,我收到错误:
ArgumentError(错误的数字 参数(1代表0)):
应用程序/控制器/ users_controller.rb:80:在create'
创建'
app/controllers/users_controller.rb:77:in
我重新格式化了代码,因此render :xml
调用是独立的,只是为了确认这是问题的根源。
发生了什么事?涉及三个参数(不是1),因为render何时采用零参数?为什么只有在我将代码恢复到原始状态后才出现错误?
答案 0 :(得分:0)
原来没有正确报告错误。我的Users::to_xml
方法出错了。