举止怪异的用户模型,工作在轨控制台,称控制器未定义的方法
问题描述:
我这样做:举止怪异的用户模型,工作在轨控制台,称控制器未定义的方法
user = User.find(params[:id])
当我这样做:
user.section_id
它说:
nomethoderror exception undefined method 'section_id' for <#Array:0x.....>
为什么说<#阵列?
在轨控制台,一切工作正常,当我做:u = User.find(2)
更新
我的JavaScript是这样做的:
$.ajax({
type: "POST",
url: "/user/add_section",
dataType: "html",
data: { id: id, section_text: sectionText
},
success: function(payload) {
},
error: function(jqx, ts, et) {
},
complete: function(){}
});
使用Chrome我可以看到ID为8 。
我的控制器操作:
def add_section
user = User.find(params[:id])
section_id = user.section_id # error!!
end
我把一个调试器在这个代码,它只是它加载的对象不正确加载,到一个数组所以此工程:
user[0].section_id
但在IRB它工作正常:用户。 section_id传递给find方法的完全相同的值。
答
user = User.find(params[:id])
貌似params[:id]
返回阵列打印出来,所以user
- 是用户的一个数组实际上。或者它可以只是一个ID包装成[]
,如:user = User.find [8]
- 这仍然会返回一个数组的一个元素
所以,你应该调试params[:id]
。
UPD
另外这里是在您的应用程序有问题。它不是REST。您应该拨打/user/:id/add_section
路径而不是/user/add_section
。
你的路线:
resources :users do
post :add_section, :on => :member
end
是什么params中[:ID]? – retro 2011-04-24 16:11:44
我发布一个整数id = 8例如。 – Blankman 2011-04-24 16:20:43
错误是'sectionid'和方法'section_id'? – 2011-04-24 16:23:00