我有一个非常奇怪的问题:在rails 3应用程序中使用xml格式请求数据适用于我的本地环境但在我的托管环境中,我得到NoMethod错误。更确切地说:
未定义的方法`type'为nil:NilClass
这是我正在谈论的方法:
def getclosest
radius = params[:radius].gsub(",",".").to_d
origin = [params[:lat].gsub(",",".").to_d,params[:lng].gsub(",",".").to_d]
@groceries = Grocery.within(radius, :origin => origin)
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @groceries }
end
end
当我转到网址时调用此方法:http://www.mysite.com/groceriesclosest/myradius/mylat/mylng
.html有效,但.xml没有,我得到上述错误。
但是,在我的本地环境中,当我转到http://localhost:3000/groceriesclosest/radiues/lat/lng.xml时,它可以正常工作
知道托管版本出了什么问题?顺便说一下,我正在使用Mongrel作为网络服务器。
谢谢!
修改
一些精确度:首先,“prod”中的数据集与本地和第二个相同,它是导致错误的行format.xml { render :xml => @groceries }
。
以下是应用程序跟踪的一部分:
app / controllers / groceries_controller.rb:92:在getclosest的块(2级)中 app / controllers / groceries_controller.rb:90:在getclosest中
完整追踪的一部分:
答案 0 :(得分:0)
在以下行中出现相同的错误:
respond_with Article.all.comments
这适用于控制台,但不适用于我的xml响应。
我通过将该行更改为
来解决它respond_with Article.all.comments.all
虽然在控制台中给出了相同的响应。
所以也许你可以试试像
这样的东西render :xml => @groceries.all
代替。