我正在尝试搜索,但没有得到任何结果。这是错的:
def BuscarRoles(usuario)
@sql="SELECT * FROM rols WHERE id_rol IN (SELECT id_rol FROM rol_usuarios WHERE id_usuario = "+usuario.to_s+")"
@roles = ActiveRecord::Base.connection.execute(@sql)
@tira='['
if @roles.count>0
@aroles.each do |rol|
@tira = @tira+" { id_rol: '" + rol.id_rol.to_s + "', descripcion: '" + rol.descripcion.to_s
j=j+1
if j<@roles.count
@tira = @tira+ " }, "
else
@tira = @tira+" } ] "
end
end
else
@tira= @tira+"{ { text: 'No hay datos', id: '0', href: '', leaf: true } } ]"
end
return @tira
end
答案 0 :(得分:1)
通过查看代码,没有给出跟踪,我只能看到一个可能导致错误的事情。
ActiveRecord::Base.connection.execute
#the result of the above code is Mysql2::Result of course depending on what database you're using.
因此,您不能像对模型对象那样使用。(点)运算符。
因此,您可以在代码中进行以下更改
@aroles.each do |rol|
#puts rol.id_role => this will throw error
puts rol[0] # this should work assuming id_role is the first column
end
那应该有所帮助。正如您在评论中提到的那样,您在@aroles.each do |rol|
中收到错误,那么您必须检查sql语句是否返回任何结果?
总结
希望有所帮助。